Добавила в functions.php, но не работает.
Есть официальные документы http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
В вашем случае будет примерно так
function exclude_single_posts_cat( $q ) {
if (
$q->is_category(24) //только в категории с ID=24
&& $q->is_main_query() //исключаем вторичные выборки
&& !is_admin() //исключаем админку
)
$q->set( 'post__not_in', array( 905, 952, 906 ) ); //минусуем посты
}
add_action( 'pre_get_posts', 'exclude_single_posts_cat' ); //хучимся
Благодарю за ответ и за разъяснения! Теперь мне хоть логика этой конструкции стала немного понятна 🙂
Но, к сожалению, этот вариант тоже не срабатывает (((
А может ли это быть связано с тем, что в archive.php у меня стоит вот такая сортировка:
<?php global $query_string;
query_posts($query_string .'&order=ASC&orderby=title'); if (have_posts()) : ?>
<?php /* If this is a category archive */ if (is_category()) { ?>
<h2><?php single_cat_title(); ?></h2>
<div align=justify><?php echo category_description(); ?></div>
А в конце файла стоит:
<?php endif; wp_reset_query(); ?>
Может ли из-за этого не срабатывать?
Может ли из-за этого не срабатывать?
Никогда не используйте query_posts
. Запомните! Это Закон Джунглей! https://ru.forums.wordpress.org/topic/wp_reset_postdata-и-wp_reset_query?replies=2#post-176950
Используйте pre_get_posts
, как и в первом варианте.
Поняла, попробую завтра на свежую голову все переделать…
Спасибо огромное за помощь )))
Не выводить определенные записи в рубрике
Есть очень интересный плагин для этих целей
Подскажите, пожалуйста, как правильно сделать?
http://blog.portal.kharkov.ua/2011/08/31/in_cat_only/ там есть готовый плагин.
Всем спасибо! Изучила всю инфу по ссылкам.
Кстати, сортировку в свое время (примерно год назад) я делала именно так, как написано в кодексе: http://codex.wordpress.org/Function_Reference/query_posts
global $query_string;
query_posts( $query_string . '&order=ASC' );
...
wp_reset_query();
Попробовала убрать эту сортировку, которая задана в archive.php и после этого вставила код, предложенный TempAcc в functions.php. Вроде все так и сделано, как написано в кодексе по поводу функции pre_get_posts…
Но почему же не работает???
Konstantin, о каком плагине идет речь? Подскажете?
SeVlad, к сожалению этот плагин не подойдет, т.к. там идет вывод списка постов только из текущей категории, без дочерних. У меня нет подрубрик. Мне нужно, чтобы просто на странице рубрики не выводились отдельные посты (устаревшие, но в поисковиках занимающие нормальные места). Если переключить их статус в «Черновик», они становятся вообще не доступными, отдается «404».
В каком направлении нужно копать? Может есть еще варианты?
Спасибо!
о каком плагине идет речь? Подскажете?
https://wordpress.org/plugins/simply-exclude/ Тщательно разберитесь в плагине! Он имеет очень тонкие и гибкие настройки вывода записей.
ОФ ТОП:
этот плагин не подойдет, т.к. там идет вывод списка постов только из текущей категории, без дочерних.
Не так давно мне было нужно именно это! Этот плагин, точнее код, положенный в основу плагина очень помог мне!
Поняла Вас, Константин!!! Большое спасибо!!! Буду разбираться )))
Буду разбираться )))
Забыл сказать, что после последнего обновления до текущей версии 2.0.6.6 плагин Simply Exclude стал криво работать и выводить в виджете рубрик какие-то лишние надписи на английском. Я откатил плагин до предыдущей версии и всё ОК! Но думаю что у вас все будет тоже ОК с последней версией плагина. Это наверное у меня был частный случай с проблемами плагина.
Сменила тему, но этот код
function exclude_single_posts_cat( $q ) {
if (
$q->is_category(24) //только в категории с ID=24
&& $q->is_main_query() //исключаем вторичные выборки
&& !is_admin() //исключаем админку
)
$q->set( 'post__not_in', array( 905, 952, 906 ) ); //минусуем посты
}
add_action( 'pre_get_posts', 'exclude_single_posts_cat' ); //хучимся
все равно не сработал.
Зато помог плагин Simply Exclude. Поставила галочки и все ненужные посты сразу же скрылись из рубрик )))
Всем спасибо!