Как добавить noindex для постов из определенной категории? WordPress + Rank Math
Использую плагин Rank Math, нужно запретить индексировать все посты определенной категории.
На форуме плагина предложили использовать следующий код:
/**
* Allows filtering of the robots meta data.
*
* @param array $robots The meta robots directives.
*/
add_filter( 'rank_math/frontend/robots', function( $robots ) {
return $robots;
});
https://support.rankmath.com/ticket/set-noindex-for-posts-with-a-specific-tag-or-category/
Не знаю как сюда добавить ID категории, где все посты нужно запретить для индексации.
Вот решение на Github, но для плагина YOAST
https://github.com/Yoast/wordpress-seo/issues/387
В Rank Math есть фильтр, позволяющий изменить настройки индексации:
add_filter( 'rank_math/frontend/robots', function ( $robots ) { return $robots; } );При просмотре записи в
$robotsмы можем увидеть следующую информацию (может меняться, в зависимости от настроек индексации плагина или настроек самой записи):Доработаем код, чтобы запретить индексирование записей из определенной рубрики:
add_filter( 'rank_math/frontend/robots', function ( $robots ) { $post_type = 'post'; // $post_type = array( 'post', 'page' ); $terms = [ 5, 'books', 'Здоровье' ]; $taxonomy = 'category'; if ( is_singular( $post_type ) && has_term( $terms, $taxonomy ) ) { $robots['index'] = 'noindex'; } return $robots; } );Данный код универсальный, его можно использовать для любых типов записей и таксономий. Ознакомьтесь с функциями has_term() и is_singular(), чтобы правильно изменить значения под свои нужды.
Скажите, пожалуйста, как в переменную $post_type добавить еще page?
попробовал так: $post_type = 'post', 'page'; не сработало.
Спустя полгода опять осенило меня, что удобнее указать категории , которые НУЖНО индексировать, а не перечень категорий, которые исключить из индекса
Или такой обратный ход не получится реализовать? @campusboy
почему этот код работает только с админки? Если разлогиниться на сайте то код уже не выполняется