WordPressでは、カスタム投稿タイプを作成する際に、そのシングルページが自動的に生成されます。しかし、場合によってはこれを避けたいこともあります。本記事では、カスタム投稿タイプのシングルページを生成しない方法を4つご紹介します。
has_archiveオプションを使用しない
register_post_type関数のオプションで、has_archiveをfalseに設定します。これにより、カスタム投稿のアーカイブページが生成されなくなります。
function my_custom_post_type() {
$args = array(
'label' => 'Custom Post',
'public' => true,
'has_archive' => false,
'rewrite' => false,
);
register_post_type('custom_post', $args);
}
add_action('init', 'my_custom_post_type');
rewriteオプションを使用してパーマリンクを無効化
rewriteオプションで、slugを空にし、with_frontをfalseに設定します。これにより、カスタム投稿タイプの個別ページのパーマリンクが生成されません。
function my_custom_post_type() {
$args = array(
'label' => 'Custom Post',
'public' => true,
'has_archive' => false,
'rewrite' => array('slug' => '', 'with_front' => false),
);
register_post_type('custom_post', $args);
}
add_action('init', 'my_custom_post_type');
template_redirectフックでリダイレクト
シングルページにアクセスされた場合に、404エラーにリダイレクトする方法です。
function redirect_custom_post_type_singles() {
if (is_singular('custom_post')) {
wp_redirect(home_url('/404'), 301);
exit;
}
}
add_action('template_redirect', 'redirect_custom_post_type_singles');
single-post_type.phpテンプレートファイルを空にする
カスタム投稿タイプのシングルページ用テンプレートファイル(例:single-custom_post.php)を作成し、内容を空にするか、404テンプレートにリダイレクトします。
<?php
// Do nothing or redirect to 404 page
get_template_part('404');
これにより、カスタム投稿タイプのシングルページが生成されるのを防ぎます。