表示設定で投稿ページに任意の固定ページを設定した場合にそのページタイトルを得る方法

非常に長いタイトルですが、書いているとおりのTipsです。

まず、その方法。

$page_for_posts = get_option( 'page_for_posts' ); 
$my_page = get_page($page_for_posts);

echo $my_page->post_title;

get_option関数の引数にpage_for_postsを指定することで、表示設定で投稿ページに指定した固定ページのIDを得る事ができます。

後は、そのIDを使って、get_pageでpageオブジェクトを取ってきて、ページのタイトルをエコーしました。

なぜ、こんなことをするのか

WordPressをカスタマイズする人は、WordPressでブログじゃないホームページを作ることは、よくあるでしょう。

ブログじゃないホームページだけどWordPressは元々ブログのCMSだから、投稿機能を使ってブログもサイト内部に作る事ができます。

その時、すべての投稿を表示するブログのトップページをどのように作るかというと方法は2つ。

  1. 固定ページのカスタムテンプレートを作成して投稿一覧を表示する
  2. 設定>表示設定で、投稿ページに任意の固定ページを設定する

普通は、この2つでしょう。

どちらが、良いのかというと、どちらでもいいです。

ただ僕は、Webサイト内にブログじゃないページ(固定ページ)がメインのサイト(企業のホームページとか)に、ブログを含めた場合、ブログの記事はブログだとわかりやすくしたかった。

それで、ブログ一覧やアーカイブページ、ブログの個別記事などを表示した時に、ページタイトルに「ブログ」であることを表示しようと思いました。

テンプレートに、直接「ブログ」と書けばいいではないか

テンプレートに直接書いた場合、変更や修正ができるのは僕だけです。

例えば、ブログを「スタッフブログ」というタイトルで使いたい人もいれば、「社長ブログ」で使いたい人もいるでしょう。企業のWebサイト内のブログでも、Webサイトのタイトルとは別にブログのタイトルをつけたい人もいるはずです。

また、マルチサイトで複数のサイトを作成し、1つのテンプレートを使い回ししている場合は、テンプレートに直接書き込むと、サイト毎に異なるタイトルをつけることが出来なくなります。

固定ページのタイトルを、そのままブログのタイトルとして使用する

表示設定で、投稿ページに指定する任意の固定ページにも、タイトルをつけます。そのページタイトルをブログのタイトルにします。

その固定ページは、カスタムメニューでも使用するでしょう。

そして、上記の方法で、ブログのトップページや、アーカイブページにも使用するようにしておけば、固定ページのタイトルを変更すれば、ブログタイトルもすべて変更されます。

つまり、クライアント側で、ブログタイトルを自由に設定できるようになります。

できるだけ、テンプレートに固定的な情報を書き込まないという志向なので、こんなことをしています。