WordPressでトップページでもmoreタグの要約を動作するようカスタム

投稿日: 2011/7/14 18:00

WordPressのトップページを独自にカスタムし、
直近3件の投稿のみ表示するようPHPを書き換えているのですが、
3件の投稿でも長すぎて見苦しいという問題が発生しました。

このような場合はWordpress的には投稿時にmoreタグを使うのが一般的みたいなのですが、
困った事にカテゴリやアーカイブのページでは要約表示してくれるのに
トップページでは要約表示を行ってくれません。

利用したコードは次のようなコードです。


<?php $posts = get_posts('numberposts=3&order=desc');
foreach($posts as $post):
setup_postdata($post); ?>
_ここに投稿1件を表示するコードが入る_
<?php endforeach; ?>

get_posts関数で最新3件のデータを取得し、
そのデータをsetup_postdata関数に渡して投稿データをグローバル変数に設定してから
通常通りの投稿表示を行っています。

このコードではmoreタグによる要約は行われず、全文章が表示されてしまいます。

例のごとくGoogle先生にお伺いを立てたところwordpress.orgのフォーラムに回答がありました。

固定ページ(トップページ)の記事に<!–more–>を付けたい

結局のところ

setup_postdata関数で設定されるグローバル変数の$moreがfalseと同義となっていることが必須となります。

というところが問題で、次のようにコードを変更することで解決しました。


<?php $posts = get_posts('numberposts=3&order=desc');
foreach($posts as $post):
setup_postdata($post);
$more = 0; ?>
_ここに投稿1件を表示するコードが入る_
<?php endforeach; ?>

偉大なる先人に感謝いたします。