ちょっとわかりづらいタイトルでスミマセン。
今とりかかっているショップサイトの案件で
- トップページのテンプレート(home.php)が存在している
- ショップ紹介の静的ページが存在している(テンプレートは page.php )
という状況下で「ショップ紹介の本文をトップページにも表示したい」というリクエストがありました。
手っ取り早いのは home.php にショップ紹介の本文をコピペしてしまうことですが、本文が更新される可能性を考えるとあまり賢い方法とはいえません。そこで検索したところ……
WordPressな日々 » TIPS – トップページにウェルカムメッセージを表示
http://www.junyx.net/wordpress/2007/192
という参考サイトが見つかりました。
……なのですが、今回、同様のサイトを三つ作る必要があり(テンプレは共通ですが)サイトごとにショップ紹介ページのIDが変わってしまうおそれがあったので、参考サイトが採用している get_page 関数ではなく get_page_by_title 関数を使うことにしました。「しました」と、いかにも知っていたかのような書き方をしているものの、関数リファレンスを眺めていて偶然発見した関数だったりして。
例によって「ご利用は計画的に」のコードですが、参考までに記しておきます。
$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 などの関数をかませて を挿入する加工が必要かと思います。
ついでに「ショップ紹介」のページに作ったカスタムフィールド「address」(=所在地を格納するために作成)を get_page_by_title 関数で取り出すコードも。
$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などの関数をかませてを挿入する加工が必要かと思います。
と書きましたが
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にしたいと思いコードを追記しました。
参考になりました。ありがとうございます。
ピンバック: ページの内容を表示する | Webっちょ.com
apply_filters