exclude_treeが効かないwordpress2.7.1

さて、連日のwordpress関連ネタに飽き飽きしているところです(主に自分)が、まあ、なんだ。マジうんこうんこだ。

さて、wordpressですが2.7にバージョンアップしたついでに、wp_list_page()に’exclude_tree‘というのが追加されました。これはまあ、分かる人には分かるでしょうけどサブページのあるページをサブページごと表示させない、というやつですね。

今までは’exclude’で、親ページを指定したらそこにぶら下がるサブページは消すというのが標準だったみたいですが、きちんと分離させようということなんでしょう。良いと思います。

が、しかし。

全然だめです。ぜーんぜん。指定しても消えません。出しゃばります。すごいです。

まあ完璧にバグらしく、このバグについては、tracに報告が上がってるようですのでそのうち対処されそうですが、実装するのはいいですが検証ぐらいしてほしいとか思う、そんなつくばに冬が訪れた今日をどうお過ごしでしょうか。

つくばで雪が今年度初めて降りました。アホか。

tracではホントに?マジで?みたいな次元の話をしてるのでバージョン3あたりまで待つぐらいの気合いがほしいかもしれませんが、Codexに書いてるぐらいなので早急に修正を望みます。

さて、無いものねだりをしてみると、本国のフォーラムに対処方法っぽいのが書いてあるのですが、毛唐語で読めません。まあ無理矢理無い知識と知人の協力によってがんばってひもとくと…。

wp-include/post-template.phpの616行;

$r['hierarchical'] = 0;

//$r['hierarchical'] = 0;

要はコメントアウトしろと。

次いで、includes/post.phpの2190行からの数行;

if ( !empty($exclude_tree) ) {
 $exclude = array();

$exclude = (int) $exclude_tree;
 $children = get_page_children($exclude, $pages);
 $excludes = array();
 foreach ( $children as $child )
 $excludes[] = $child->ID;
 $excludes[] = $exclude;
 $total = count($pages);
 for ( $i = 0; $i < $total; $i++ ) {
 if ( in_array($pages[$i]->ID, $excludes) )
 unset($pages[$i]);
 }
 }

を、以下の用に修正する;

if ( !empty($exclude_tree) ) {
$exclude = array();

$exclude = explode(',',$exclude_tree);
foreach ($exclude as $exclude_page) {
$children = get_page_children($exclude_page, $pages);
$excludes = array();
foreach ( $children as $child )
$excludes[] = $child->ID;
$excludes[] = $exclude_page;
$total = count($pages);
for ( $i = 0; $i < $total; $i++ ) {
if ( in_array($pages[$i]->ID, $excludes) )
unset($pages[$i]);
}
}
}

で、してみた。

結局どうなった

だめだった。\(^o^)/

\(^o^)/あきらめる\(^o^)/しかないか\(^o^)/もうだめぽ\(^o^)/

あと、日本だとぜんぜん話題になってないところ、ニワカユーザしか居ないことを表してるんじゃね?とか思った件について。2009/02/28の2時20分現在でGoogle日本語検索でexclude_treeを検索すると3件しかでない。アホか。