WordPress
カスタマイズ事例

WORDPRESS CUSTOMIZATION

ページに別の固定ページの内容を表示する

みなさんは、記事のアーカイブページに記事一覧以外に載せたいコンテンツがある場合、どう記述していますか?
archive.php に直接htmlを書いてしまう方、いやそもそも一覧以外にコンテンツを載せない方などいろいろいると思いますが、
WordPressの固定ページでhtmlを書いてその内容をアーカイブページに差し込む方法もありますよ、という話です。

固定ページで書く理由は一つですね。
納品した後、PHPファイルを編集しなくても、WordPressの管理画面で編集ができる。
これならFTPだのhtmlだのに明るくないクライアントでも簡単にできますね。

やり方は簡単です。
archive.phpに以下を記述します。

$page_id = 999; //表示したい固定ページのページID
$alternative_post = get_post( $page_id );
// ↑ 投稿格納先の変数にグローバル変数の$postは使わないようにしましょう。
//メインループに置き換えられてしまう可能性があります。

echo apply_filters('the_content', $alternative_post->post_content); //固定ページの内容

もちろん、アーカイブページに限った話ではないです。タクソノミーページや記事詳細ページ、別の固定ページの下のほうにインクルードしたい共通コンテンツがある場合とかも、このやり方でできますね。

具体的な使い方にもう少し踏み込んでみましょう。
たとえばタクソノミーページ(カテゴリーページ)で、それぞれのタームごとに固有の内容を設けたいときなどは、タームスラッグをもとに参照する固定ページを分けて管理しておけばいいです。たとえば固定ページのスラッグを [タームスラッグ]_contents というスラッグにしておいて、タクソノミーページで下のように書けば、[タームスラッグ]_contents というスラッグの固定ページの内容を表示させることができます。

$current_slug = get_query_var( 'term' );
$page_id = get_page_by_path( $current_slug . '_contents' );
$page_id = $page_id->ID;

//以降は先の内容と同じなので省略

このほかにもいろんなケースに流用できますね。
 
ただ、管理画面のエディターを使用するとおせっかい機能の自動pタグが発動します。発動されてしまうと、エディター内に記述した内容に勝手にpタグとか挿し込まれたりして、思ったHTMLにならない可能性があります。
なので、自動pタグを避けたいという方は「固定ページだけ自動でpタグが入らないようにする」を参考にして、自動pタグを無効にしましょう。
 
※ 作った元の固定ページが検索エンジンにインデックスされないように no-index にすることをお忘れなく

【100ウェブ新着情報メルマガ】

WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!