Замена плагину Advanced Category Excluder, используем простой код

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

Передо мной встала задача, убрать записи с RSS и с главной страницы одной рубрики. Т.е. фактически сделать то же самое, что делал плагин. И желательно с минимальными корректировками кода, так как не охото было из-за этого перелопачивать весь код шаблона моего блога.

И собственно, я нашел желаемый код, которые обалденно выполняет данную функцию.

Я просто добавил в файл functions.php следующий код:

function removeCat($query) {
if ($query->is_feed || ($query->is_home && !(is_paged())))
{$query->set('cat','Номер моей рубрики');}
return $query; }
add_filter('pre_get_posts','removeCat');

Данный код, убрал страницы моей рубрики с главной страницы и с rss ленты блога.

Давайте разберем данный код подробнее

if ($query->is_feed || ($query->is_home && !(is_paged())))

Данная строчка показывает, что страницы уберутся с фида  ($query->is_feed)  и с главной страницы сайта  ($query->is_home && !(is_paged())) , однако страницы рубрики будут отображаться на страницах page1, page2 и т.д.

Для того, чтобы не отображались на страницах, то заменяем данную строчку на ($query->is_home)

Т.е. наша строчка трансформировалась в   if ($query->is_feed || ($query->is_home))

Если мы хотим например убрать страницы, только из rss, то наша строчка превратится в  if ($query->is_feed)

Дальше можно по аналогии экспериментировать.

Теперь давайте разберем еще одну важную строку: 

{$query->set('cat','Номер моей рубрики');}

Вместо «Номер моей рубрики» нужно вставить цифру вашей рубрики, которую вы хотите скрыть, если рубрик несколько, то просто перечисляем их через запятую. Также хочу обратить внимание, что если скажем рубрика 4, то нужно вставить -4. Приведу пример с 4 рубрикой:

{$query->set('cat','-4');}

Если несколько рубрик (скажем 4 и 11):

{$query->set('cat','-4, -11');}

Возможно у вас возник вопрос:

А как определить номер рубрики?

Для этого просто заходим в админку WP, переходим по следующему адресу:

Записи —> Рубрики

И направляем мышку на нужную рубрику, у нас высветится следующая строчка:

Замена плагину Advanced Category Excluder, используем простой кодЯ выделил в кружочек нужную нам цифру, это и будет циферный код, нужной нам рубрики.

Вот собственно после небольшой манипуляции с кодом, мы легко и просто заменили плагин Advanced Category Excluder для  WordPress.

 

Есть 3 коммент.

  • У меня по другому немного:
    Если главная страница, то покажем соответствующую категорию, где у меня нормальные посты, вот и всешеньки.

    Тут надо понимать что RSS главной будет та, которая не общая, а которая=7 в моем случае, на нее и есть ссылка с морды.

    ОтветитьОтветить
  • @jkeks: У меня просто задача стояла не объединять все категории, у меня несколько категорий… Когда столкнулся с этой проблемой, был на твоем блоге и видел решение, решение интересное, если бы можно было оставить все категории :)

    ОтветитьОтветить
  • да у меня правило такое: Все не для Паблика, и одна категория для Павлика. =)

    ОтветитьОтветить

Оставить комментарий

  Правила комментирования на блоге