はじめに

設定→表示設定→「ホームページの表示」では、サイトのフロントページを最新の投稿または固定ページに設定できます。
通常、この設定は管理画面で手動変更しますが、「ホームページの表示」を自動的に固定ページに設定します。
実装方法
以下のコードをfunctions.phpに追加します。
このコードを適用すると、 ホームページの表示が自動で固定ページ (ID=123) に設定されます。
// フロントページの表示
add_filter('pre_option_show_on_front', function () {
return 'page';
});
// フロントページ使用する固定ページを設定
add_filter('pre_option_page_on_front', function () {
return 123;
});
解説
- pre_option_show_on_front
このフィルターを用いることで、 「ホームページの表示」設定を「最新の投稿」または「固定ページ」に変更できます。
| ホームページの設定 | 値 |
|---|---|
| 最新の投稿 | posts |
| 固定ページ | page |
- pre_option_page_on_front
このフィルターは、 ホームページとして使用する固定ページのIDを設定するためのものです。
ここでは固定ページID=123がトップページとして表示されます。
投稿ページを自動で設定する方法
フロントページを固定ページに設定したる場合、投稿一覧を表示するための固定ページを別途指定する必要があります。
- 指定した固定ページのスラッグが、投稿一覧ページのURLになります(例:スラッグ
blog→URLhttps://example.com/blog/)。 - この設定を行わない場合、投稿記事を一覧表示できません。
そこで、投稿一覧ページとして、あらかじめ作成しておいた固定ページ(ID=456)を自動で割り当てます。
実装手順
以下のコードをfunctions.phpに追加します。
// 投稿一覧を固定ページに自動設定
add_filter('pre_option_page_for_posts', function () {
return 456;
});
参考:投稿一覧に任意のスラッグを割り付ける方法
通常は https://example.com/に投稿一覧が表示されます。
しかし、任意のスラッグ、例えば https://example.com/blog/に割り当てることも可能です。
実装手順
以下のコードをfunctions.phpに追加します。
add_filter('register_post_type_args', function ($args, $post_type) {
if ($post_type === 'post') {
$args['rewrite'] = ['slug' => 'blog'];
$args['has_archive'] = 'blog';
}
return $args;
}, 10, 2);
補足

ホームページ設定で投稿ページを指定した場合とは異なり、Cocoonでは投稿一覧(アーカイブページ)に自動でアーカイブタイトルが表示されます(図2参照)。
そのため、投稿ページを指定した場合と同様に、アーカイブタイトルを削除します。
add_filter('cocoon_part__tmp/list-title', function ($content) {
if (is_post_type_archive('post')) {
$content = preg_replace('#<h1[^>]*>.*?</h1>#is', '', $content);
}
return $content;
});
さいごに
今回紹介した方法を使えば、 管理画面の設定を手動で変更せずに「ホームページの表示」を固定ページへ自動設定 できます。
スキン制御やカスタマイズ時に有用であり、 テーマ適用時に毎回「表示設定」を変更する手間を省くことが可能です。

