- 2010-03-14 (日) 9:45
- WPメモ
Executable PHP widgetのウィジェット上で$postを使うとバグる。
				fanction hogehoge($post)としても正常に呼び出せない。
				条件分岐タグはうまくいくのに。
このせいで2時間ぐらい無駄に悩んでしまったし、出来そうなコードを無理だと思っていくつか破棄してしまった。
				ほんと罠である。死にたい。
用途は分からないけど、親ではなく子(2階層目)のIDを取得する方法
さて、今日WordPressのフォーラムで書いた内容をちょっとだけメモします。
- 
				function ps_get_root_page( $cur_post, $cnt = 0 ) {
- 
				if ( $cnt> 100 ) { return false; }
- 
				$cnt++;
- 
				$post_temp = get_post( $cur_post->post_parent );
- 
				if ( $cur_post->post_parent == 0 ) {
- 
				$root_page = $cur_post;
- 
				} elseif ( $post_temp->post_parent == 0 ) {
- 
				$root_page = $cur_post;
- 
				} else {
- 
				$root_page = ps_get_root_page( get_post( $cur_post->post_parent ), $cnt );
- 
				}
- 
				return $root_page;
- 
				}
$root_page->IDで子のpageIDが取得できます。
この挙動はかなりややこしくて、文章で説明するのは困難なのですが、
				例えばゲームメーカー(親)-スクエニなど(子)-ドラクエなど(孫)-シリーズタイトル(曾孫)という関係があったとして、
				たとえばDQ4(曾孫)とかを表示してるとき
スクエニ(子)以下のページ、つまりドラクエ(孫)やDQ1(曾孫)、DQ2(曾孫)、FF(孫)、スターオーシャン(孫)などを表示して
				任天堂(子)やSCE(子)やSEGA(子)など、およびそれ以下のページ(マリオなど)は表示しない
という動作をさせることが出来る。
				元々JSでポップアップツリー表示とかできるから、正直なんに使うのか全然わからないけどね。
ちなみにchild_of=ぐらいしか使いどころないと思うけど、child_ofだとそのID自体のページはリスト化されないので、
				リストに子も含めたければ、別途$root_page->IDで各種情報を取得して記述してあげる必要があります。
get_post_ancestors()を使いたかったんだけど、多分この仕様じゃ使えないんじゃないかと思う。
- Newer: アップロードURLの罠
- Older: インストール済みプラグイン
コメント (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
