固定ページの本文中に子ページのリンク付きリストを表示する方法

WordPress固定ページ投稿のページ属性
親子関係を持った固定ページで、子ページへのリストをリンク付きで本文中に埋め込む方法です。

結構基本ですし、使用頻度は少ないと思いますが、一応押さえておかないといけないので、自分へのメモ的に。

function add_child_page_list($content){
global $post;
$child_pages = get_posts(array(
'numberposts' => -1,
'post_parent' => $post->ID,
'post_type' => 'page',
'order' => 'ASC',
'orderby' => 'title'
));
foreach($child_pages as $line){
$title_list .= '<li><a href="'.get_permalink($line->ID).'">'.esc_html($line->post_title).'</a></li>';
}
if($title_list != ''){
$title_list = '<ul id="child-list">'.$title_list.'</ul>';
}
return $content.$title_list;
}
add_filter('the_content','add_child_page_list',0);

フィルターフック「the_content」を使います。

またこの時、他のプラグインを使っている場合、例えば『Similar Posts』などを使っていると、「本文→Similar Posts→子ページリスト」という順番になることがあります。その順番を入れ替えて「本文→子ページリスト→Similar Posts」などとしたい場合には、3番目の引数を0~9にすると、本文直下になります。この数値は関連するプラグインによって異なるので、自分の思い通りの場所になるように設定してください。

あと、本文直前に子ページリストを追加したい場合には、『return』のところの行で『$content.$title_list』となっているのを、前後入れ替えて『$title_list.$content』とします。要するに引数の『$content』が本文を表すので、これの前か後ろに結合するということです。

というところで、Similar Postsについて調べていて気付いたのですが、基本的にWordPress2.6.2までしか正式対応していないんですね。3.4.2でも動いてますが・・・。今後、要注意ですね。

スポンサードリンク

twitterまたはFacebookでもコメントして頂けます