web-dev-qa-db-ja.com

カスタム投稿タイプのアーカイブページを無効にして、そのフィードを有効にするにはどうすればよいですか。

カスタム投稿タイプのアーカイブページを無効にするには、次のコードを使用します。

$args = array(
    'has_archive' => false,
);

しかしhas_archivefalseを使用すると、そのカスタム投稿タイプのフィードページ(name.com/books/feedなど)も無効になります。カスタム投稿タイプのアーカイブページを無効にしてフィードをアクティブにしておく方法を知りたいですか。

1
saeed shabani

最後に私はそれに対する解決策を見つけました。 has_archivetrueに設定します。これで、CPTのフィードとアーカイブページの両方がアクティブになりました。 CPTのアーカイブページのみを無効にするには、functions.phpファイルで次のフィルタを使用します。

function AryanThemes_disable_cpt_archive_template(){
    if ( is_post_type_archive('cpt') ) {
        global $wp_query;
      $wp_query->set_404();
      status_header( 404 );
      get_template_part( 404 ); exit();
  }
}
add_filter( 'archive_template', 'AryanThemes_disable_cpt_archive_template', -1 );
0
saeed shabani

フィードの書き換えルールを生成するには、feedsrewrite引数をtrueに設定します。何も明示的に渡されない場合、デフォルトはhas_archiveが設定されているものになります。

$args = array(
    'has_archive' => false,
    'rewrite' => array(
        'feeds' => true
    ),
    // your other args...
);
4
Milo