Как быстро скрыть категорию постов везде на сайте?

20 окт. 2011 г., 01:03:13
Просмотры: 21.2K
Голосов: 2

Я хочу избавиться от некоторых старых постов, которые не хочу сохранять. Я думаю создать категорию с названием 'old' и использовать ее как корзину для всего ненужного контента из старых записей.

Причина, по которой я просто не удаляю их - это трафик из Google. Некоторые из этих страниц получают 1-2 посещения в день, так почему бы не оставить их? Хотя бы для трафика AdSense :)

В любом случае.

Теперь мне нужен способ скрыть категорию 'old' отовсюду. Мне нужен быстрый и простой способ сделать это, предпочтительно через functions.php - не хочу менять каждый пункт меню и добавлять -old.

Я также хочу исключить посты из этой категории из отображения в разделе 'похожие записи'. Но для этого, я думаю, мне придется посмотреть сам плагин...

Есть какие-нибудь советы?

Спасибо!

1
Комментарии

Я думаю, есть другие способы скрыть категорию без написания кода, например, защитить её паролем или использовать плагин для исключения категорий. Я поискал и нашел эту статью, на которую вы можете ссылаться: https://passwordprotectwp.com/hide-category-wordpress/

suzie suzie
26 сент. 2019 г. 08:05:34
Все ответы на вопрос 4
4

pre_get_posts - это правильный хук для данной задачи.

Поскольку я недавно реализовывал исключение категорий в другом ответе, размещу его здесь тоже. Исключение категории из цикла WordPress

На основе примера из кодекса:

http://codex.wordpress.org/Custom_Queries#Category_Exclusion

add_action('pre_get_posts', 'wpa_31553' );

function wpa_31553( $wp_query ) {

    //$wp_query передается по ссылке. Нам не нужно ничего возвращать. Любые изменения, сделанные внутри этой функции, автоматически повлияют на глобальную переменную

    $excluded = array(272);  //сделал массивом на случай, если нужно исключить более одной категории

    // исключаем только на фронтенде
    if( !is_admin() ) {
        $wp_query->set('category__not_in', $excluded);
    }
}
7 мар. 2012 г. 08:20:45
Комментарии

Ваша функция будет хорошо исключать записи выбранных категорий из цикла на главной странице блога, из страниц категорий и архивов, но не из виджетов "Последние записи" и "Последние комментарии" в сайдбаре. Как это исправить?

Iurie Iurie
25 февр. 2014 г. 21:42:47

@lurie Лучше всего задать этот вопрос отдельно.

helgatheviking helgatheviking
25 февр. 2014 г. 23:41:44

Хорошо, спасибо! Вот мой вопрос: http://wordpress.stackexchange.com/q/136017/25187.

Iurie Iurie
26 февр. 2014 г. 15:57:12

Согласно ответу @TheDeadMedic я переработал это для работы со всеми запросами: http://wordpress.stackexchange.com/a/136023/6477

helgatheviking helgatheviking
26 февр. 2014 г. 18:22:56
2

Для этого есть плагин :-)

http://wordpress.org/extend/plugins/hide-categories/

20 окт. 2011 г. 03:19:54
Комментарии

Я против использования плагинов для таких незначительных задач. К тому же, разбирая реальный код, можно чему-то научиться :)

User User
20 окт. 2011 г. 15:17:11

плагин не работает

User User
15 мар. 2012 г. 16:55:53
1

Попробуйте это, добавьте в ваш файл function.php

add_action('pre_get_posts', 'block_category' );
function block_category() {
global $wp_query;   
$wp_query->query_vars['cat'] = '-1';
}

Замените -1 на ID вашей категории

20 окт. 2011 г. 12:57:47
Комментарии

это не сработало :(

User User
20 окт. 2011 г. 18:46:36
0

можете попробовать снова с условным тегом

function exclude_category($query) {
if ( $query->is_home ) {
    $query->set('cat', '-xx');
}
return $query;
}

xx - это идентификатор вашей категории

20 окт. 2011 г. 19:13:56