Home > WPメモ > 凡ミスで何時間も悩むと死にたくなる

凡ミスで何時間も悩むと死にたくなる

Executable PHP widgetのウィジェット上で$postを使うとバグる。
fanction hogehoge($post)としても正常に呼び出せない。
条件分岐タグはうまくいくのに。

このせいで2時間ぐらい無駄に悩んでしまったし、出来そうなコードを無理だと思っていくつか破棄してしまった。
ほんと罠である。死にたい。

用途は分からないけど、親ではなく子(2階層目)のIDを取得する方法

さて、今日WordPressのフォーラムで書いた内容をちょっとだけメモします。

元記事はこちら

PHP:
  1. function ps_get_root_page( $cur_post, $cnt = 0 ) {
  2.     if ( $cnt> 100 ) { return false; }
  3.     $cnt++;
  4.     $post_temp = get_post( $cur_post->post_parent );
  5.     if ( $cur_post->post_parent == 0 ) {
  6.         $root_page = $cur_post;
  7.     } elseif ( $post_temp->post_parent == 0 ) {
  8.         $root_page = $cur_post;
  9.     } else {
  10.         $root_page = ps_get_root_page( get_post( $cur_post->post_parent ), $cnt );
  11.     }
  12.     return $root_page;
  13. }

$root_page->IDで子のpageIDが取得できます。

この挙動はかなりややこしくて、文章で説明するのは困難なのですが、
例えばゲームメーカー(親)-スクエニなど(子)-ドラクエなど(孫)-シリーズタイトル(曾孫)という関係があったとして、
たとえばDQ4(曾孫)とかを表示してるとき

スクエニ(子)以下のページ、つまりドラクエ(孫)やDQ1(曾孫)、DQ2(曾孫)、FF(孫)、スターオーシャン(孫)などを表示して
任天堂(子)やSCE(子)やSEGA(子)など、およびそれ以下のページ(マリオなど)は表示しない

という動作をさせることが出来る。
元々JSでポップアップツリー表示とかできるから、正直なんに使うのか全然わからないけどね。

ちなみにchild_of=ぐらいしか使いどころないと思うけど、child_ofだとそのID自体のページはリスト化されないので、
リストに子も含めたければ、別途$root_page->IDで各種情報を取得して記述してあげる必要があります。

参考にしたのはこの質問

get_post_ancestors()を使いたかったんだけど、多分この仕様じゃ使えないんじゃないかと思う。

コメント (Close):1

****** 11-11-20 (日) 15:59
このコメントは管理者の承認待ちです

トラックバック:0

このエントリーのトラックバックURL
http://t3.xii.jp/nawo/2010/03/14/77/trackback/
Listed below are links to weblogs that reference
凡ミスで何時間も悩むと死にたくなる from Seasonism Season3

Home > WPメモ > 凡ミスで何時間も悩むと死にたくなる

カテゴリー
タグクラウド
アーカイブ
RSS トラたま袋の新着
フィード

Return to page top