フロントページを自動で固定ページに設定する方法

Cocoonカスタマイズ集
この記事は約3分で読めます。
記事内に広告が含まれています。

はじめに

設定→表示設定→「ホームページの表示」では、サイトのフロントページを最新の投稿または固定ページに設定できます。

通常、この設定は管理画面で手動変更しますが、「ホームページの表示」を自動的に固定ページに設定します。

この記事では、この方法について説明します。

実装方法

以下のコードを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に追加します。

コードを追加後、設定→パーマリンクで「変更を保存」することで、URLが正しく反映されます。

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;
});

さいごに

今回紹介した方法を使えば、 管理画面の設定を手動で変更せずに「ホームページの表示」を固定ページへ自動設定 できます。
スキン制御やカスタマイズ時に有用であり、 テーマ適用時に毎回「表示設定」を変更する手間を省くことが可能です。

タイトルとURLをコピーしました