【WordPress】カスタム投稿のシングルページを生成しない方法
WordPressのカスタム投稿を作成すると、アーカイブページとシングルページが生成されます。
これがカスタム投稿の標準機能であり、標準的な構成になっていますが、WEBサイトの構成によってはアーカイブページだけ必要で、シングルページは不要という場合も。
不要なページを生成してしまうのはSEO的にもよくありません。
今回の記事ではカスタム投稿のシングルページが不要な場合、シングルページを生成しない方法をご紹介します。
この記事の目次を表示
カスタム投稿のシングルページが不要になる場面
WEBサイトの構成によってはカスタム投稿のシングルページが不要になる場合があります。
例えば、「沿革」や「よくある質問」などをクライアントで簡単に変更出来るようにするために、カスタム投稿を使い更新画面を作った場合、それらは1ページに全て表示することが大半です。
しかし、カスタム投稿の標準機能では自動的にシングルページは生成されてしまいます。
このような場合は、カスタム投稿のシングルページは不要になる場面です。
そもそもシングルページが必要ない場合は、カスタム投稿を使わず、複製機能のあるAdvanced Custom Fields (ACF) などのカスタムフィールドを使うことも検討するようにします。
カスタム投稿のシングルページが不要な場合の対応方法
カスタム投稿のシングルページが不要な場合、以下の2つの対応をします。
- カスタム投稿のシングルページの生成しない設定をする
- プレビューボタンの扱い
カスタム投稿のシングルページを生成しない設定
カスタム投稿のシングルページを生成しないためには以下のコードをfunctions.phpに記述します。
add_filter( '●●●_rewrite_rules', '__return_empty_array');
●●●の部分にはカスタム投稿の投稿タイプ名を指定します。これだけの記述で、カスタム投稿のシングルページは生成されなくなります。
プレビューボタンの扱い
続いて、カスタム投稿の投稿画面に表示されるプレビューボタンの扱いについてです。
カスタム投稿のシングルページを生成しない場合、プレビューボタンの扱いは以下の2つからどちらかの対応を採用します。
- プレビューボタンを非表示にする
- プレビューボタンをクリックしたらアーカイブページを表示する
プレビューボタンを非表示にする
まずは、プレビューボタンを非表示する方法です。
プレビューボタンを非表示にするには以下のコードをfunctions.phpに記述します。
add_action('admin_print_styles', 'my_admin_print_styles');
function my_admin_print_styles() {
$current_screen = get_current_screen();
if( isset( $current_screen ) && ( $current_screen->post_type === '●●●' ) ) {
$style = '<style>#preview-action {display: none;}</style>';
echo $style;
}
}
●●●の部分にはカスタム投稿の投稿タイプ名を指定します。
これで指定したカスタム投稿の投稿画面ではプレビューボタンが表示になります。
プレビューボタンを押したらアーカイブページを表示する
次にご紹介するのはプレビューボタンをクリックしたらアーカイブページを表示する方法です。
プレビューボタンを押した時、表示されるページのテンプレートファイルは「single-●●●.php」です。
●●●の部分はカスタム投稿の投稿タイプ名を指定します。
このテンプレートファイルを作成し、テンプレートファイル内に以下のように記述します。
<?php get_header(); ?>
<?php echo get_template_part('archive-●●●'); ?>
<?php get_footer(); ?>
●●●の部分にはカスタム投稿の投稿タイプ名を指定します。
こうすることで、プレビューボタンをクリックした時、詳細ページのテンプレートファイルが読み込まれ、アーカイブページを表示することが出来ます。
まとめ
いかがでしたか?
WordPressは自由度が高いため、どんな構築方法でもそれなりに動きます。
基本的にカスタム投稿はアーカイブページとシングルページはセットで使用しますが、中にはシングルページが不要な場合があります。
そんな時は今回ご紹介した方法でシングルページを生成しないようにしましょう。