WordPress как запретить вывод архивной страницы custom post_type?

Для того чтобы запретить вывод архивной страницы для определенного post type в WordPress, вам потребуется внести изменения в файл functions.php вашей активной темы.

Сначала вам нужно определить свойство 'has_archive' для вашего custom post type как false при его регистрации. Например, если ваш custom post type называется 'example', можно использовать следующий код:

function example_post_type() {
  $args = array(
    'labels' => array(
      'name' => 'Examples',
      'singular_name' => 'Example'
    ),
    'public' => true,
    'has_archive' => false, // Запретить вывод архивной страницы
    // Другие настройки вашего custom post type
  );
  register_post_type( 'example', $args );
}
add_action( 'init', 'example_post_type' );

Теперь, когда вы указали 'has_archive' как false, архивная страница для вашего custom post type больше не будет доступна.

Однако, если вы хотите дополнительно скрыть ссылки на архивную страницу из публичной части вашего сайта, вы можете использовать фильтр 'rewrite_rules_array' для удаления правил роутинга архива статьи. Добавьте следующий код также в файл functions.php:

function hide_example_archive( $rules ) {
  $new_rules = array();
  foreach ( $rules as $rule => $rewrite ) {
    if ( preg_match( '/example/', $rule ) ) { // Замените 'example' своим именем slug'а custom post type
      continue;
    }
    $new_rules[ $rule ] = $rewrite;
  }
  return $new_rules;
}
add_filter( 'rewrite_rules_array', 'hide_example_archive' );

Это изменение позволит удалить правила роутинга архивных страниц для вашего custom post type, и как результат, ссылки на архивную страницу уже не будут работать.

Таким образом, вы можете запретить вывод архивных страниц для вашего custom post type в WordPress, как при помощи изменения свойства 'has_archive' при регистрации custom post type, так и с помощью удаления соответствующих правил роутинга с помощью фильтра 'rewrite_rules_array'.