@Pista

Как добавить noindex для постов из определенной категории Wordpress?

Использую плагин 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-fo...

Не знаю как сюда добавить ID категории, где все посты нужно запретить для индексации.

Вот решение на Github, но для плагина YOAST
https://github.com/Yoast/wordpress-seo/issues/387

Помогите, пожалуйста :)
  • Вопрос задан
  • 505 просмотров
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Могу предложить вам решение не связанное с Rank Math или Yoast. Вы можете написать любые условия и вывести meta noindex на хуке wp_head

add_action( 'wp_head', 'skill_noindex', 1 );
if ( !function_exists( 'skill_noindex' ) ) {
	function skill_noindex() {

		// закрываем от индексации пустые архивные страницы (таксономии, категории, теги)
		if( is_archive() && !have_posts() ) {
			echo '<meta name="robots" content="noindex, nofollow, noarchive"/>';
		}

		// закрываем от индексации категорию "отзывы"
		if ( is_category( 'testimonials' ) ) {
			echo '<meta name="robots" content="noindex, nofollow, noarchive"/>';
		}

		// проверяем, что тип записи - post, но достаточно проверять is_single()
		if ( get_post_type() === 'post' ) {
			// получаем категории поста
			if ( $categories = get_the_category( get_queried_object_id() ) ) {
				foreach ( $categories as $key => $category ) {
					// проверяем, что в массиве есть категория Новости
					if ( $category->slug == 'news' ) {
						echo '<meta name="robots" content="noindex, nofollow, noarchive"/>';
					}
				}
			}
		}

	}
}


UPDATE

С версии 5.7 для этого появился фильтр, пользоваться так:

add_filter( 'wp_robots', 'skill_robots' );
if ( !function_exists( 'skill_robots' ) ) {
  function skill_robots( $robots ) {

    if ( is_archive() && !have_posts() ) {
      $robots['noindex'] = true;
      $robots['nofollow'] = true;
    }

    $robots['max-snippet'] = '-1';
    $robots['max-image-preview'] = 'large';
    $robots['max-video-preview'] = '-1';

    return $robots;
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы