WordPress как на ладони

Как сделать 301 редирект всех постов определенной категории на страницу?

Скажите, пожалуйста, как можно 301 редирект поставить для всех потов определенной категории, например у меня есть 10 постов, которые принадлежат категории "Cats" необходимо редирект сделать на определенную страницу.

Ниже пример кода для применениея noindex постам из определенной категории, в примере посты категории news, не будут индексироваться. На основе этого кода или другого, нужно сделать 301 редирект на определенную страницу сайта, например на главную. Meta редирект Google не рекомендует, нужен 301.

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"/>';
		  }
		}
	  }
	}

  }
}
0
udder
3.3 года назад 8
  • 1
    mi1385 solosofii.com

    in_category... и далее wp_redirect( $location, $status );

    udder 3.3 года назад

    Попробовал, но не заработало, не знаю где ошибка sad

    add_action( 'template_redirect', 'skill_template_redirect' );
    function skill_template_redirect(){
      // проверяем, что тип записи - 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' ) {
    	  wp_redirect( 'https://google.com', 301 );
    	 exit();
    	  }
      }
      }
      }
    }
    el-lable 3.3 года назад

    редирект вроде на init вешают

    mi13 3.3 года назад
    add_action( 'init', 'skill_template_redirect' );
    function skill_template_redirect(){
    if(is_single() && in_category( 'news' )) {
    wp_redirect( 'https://google.com', 301 );
    }
    }
    udder 3.3 года назад

    не работает.

    P.S постоянная ссылка не содержит имя категории, только название

    Комментировать
  • 0
    el-lable620 el-lable.ru

    Вы что-то не то делаете.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация