WordPressにて 特定ページの本文をトップページに表示する方法

ちょっとわかりづらいタイトルでスミマセン。

今とりかかっているショップサイトの案件で

  • トップページのテンプレート(home.php)が存在している
  • ショップ紹介の静的ページが存在している(テンプレートは page.php )

という状況下で「ショップ紹介の本文をトップページにも表示したい」というリクエストがありました。

手っ取り早いのは home.php にショップ紹介の本文をコピペしてしまうことですが、本文が更新される可能性を考えるとあまり賢い方法とはいえません。そこで検索したところ……

WordPressな日々 » TIPS - トップページにウェルカムメッセージを表示
http://www.junyx.net/wordpress/2007/192

という参考サイトが見つかりました。

……なのですが、今回、同様のサイトを三つ作る必要があり(テンプレは共通ですが)サイトごとにショップ紹介ページのIDが変わってしまうおそれがあったので、参考サイトが採用している get_page 関数ではなく get_page_by_title 関数を使うことにしました。「しました」と、いかにも知っていたかのような書き方をしているものの、関数リファレンスを眺めていて偶然発見した関数だったりして。

例によって「ご利用は計画的に」のコードですが、参考までに記しておきます。

<?php // ページ「ショップ紹介」の本文を抽出
    $post = get_page_by_title ( 'ショップ紹介' );
    echo $post -> post_content;
?>

1
2
3
4
<?php // ページ「ショップ紹介」の本文を抽出
	$post = get_page_by_title ( 'ショップ紹介' );
	echo apply_filters ( 'the_content', $post -> post_content );
?>

ショップ紹介が1行こっきりならよいのですが、複数行にわたる場合は $post -> post_content で取り出した本文に適宜 nl2br などの関数をかませて <br /> を挿入する加工が必要かと思います。

ついでに「ショップ紹介」のページに作ったカスタムフィールド「address」(=所在地を格納するために作成)を get_page_by_title 関数で取り出すコードも。

<?php // ページ「ショップ紹介」のカスタムフィールド「address」を抽出
    $post = get_page_by_title ( 'ショップ紹介' );
    echo get_post_meta ( $post -> ID, 'address', true );
?>

1
2
3
4
<?php // ページ「ショップ紹介」のカスタムフィールド「address」を抽出
	$post = get_page_by_title ( 'ショップ紹介' );
	echo get_post_meta ( $post -> ID, 'address', true );
?>

関数リファレンス - WordPress Codex 日本語版
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9

[2009.2.23追記]

ショップ紹介が1行こっきりならよいのですが、複数行にわたる場合は $post -> post_content で取り出した本文に適宜 nl2br などの関数をかませて <br /> を挿入する加工が必要かと思います。

と書きましたが

echo $post -> post_content;

の部分を

echo apply_filters ( 'the_content', $post -> post_content );

と置き換えれば nl2br など使わずとも解決ですね。記事本文に対して何らかの加工を加えるプラグインを追加しているなら、なおのこと。

[2010.8.26追記]
セキュリティを高める観点からもapply_filters ( 'the_content', $post -> post_content )を使うのがよいです。

[2010.8.27追記]
「ご利用は計画的に」とは書いたものの、できるだけ精度の高いtipsにしたいと思いコードを追記しました。

Related posts:

  1. 続・WordPressにて 子ページのタイトルだけでなく本文も一覧で取り出す
  2. WordPressにて 特定ページのみ『Custom Field Gui Utility』を適用する
  3. WordPressにて 子ページのタイトルだけでなく本文も一覧で取り出す
  4. WordPress 2.6.3にアップデート
  5. WordPress 2.5 における画像アップロードのスマートさに感嘆した

カテゴリー: WordPress   パーマリンク

WordPressにて 特定ページの本文をトップページに表示する方法 への2件のコメント

  1. asazuki より:

    参考になりました。ありがとうございます。

  2. ピンバック: ページの内容を表示する | Webっちょ.com

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> <pre lang="" line="" escaped="">