2011-12-07 9 views
0

"ステータステスト"を行う簡単な関数を作成しようとしています。目標は、現在表示中のページに子ページがあるかどうかをテストして確認することです。これを使用して、子ページに合わせてレイアウトを変更します。次のコードはうまくいくはずですが、うーん、サイコロはありません。現在のページに子ページがある場合にtrueを返す関数

誰かが見逃していることを見てください。 EDIT - これはワードプレスにあることに注意してください。

function is_subpage() { 
global $post;        // load details about this page 

if (is_page() && $post->post_parent) { // test to see if the page has a parent 
    return true;           // return true, confirming there is a parent 

} else {         // there is no parent so ... 
    return false;       // ... the answer to the question is false 
} 

}

答えて

0
+0

私が見つけた(そしてこれも)すべての例の問題は、私が静的ページの$ pageidを取得しようとしていると仮定していることです。私が本当にやりたいことは、現在のページに子があるかどうかをテストし、trueまたはfalseを返すことだけです。 – Brian

+2

hmm ...試してみましたか? '<?php $ children = get_pages( 'child_of ='。$ post-> ID);?> if(count($ children)!== 0){//本当のコード} else {// false code} ?> ' – techouse

+0

これは私がそれをやることができた唯一の方法です。 – CookiesForDevo

0

をそれだけで簡単なチェックを行うには、すべての子ページをロードするビットリソースを集中的と思われるので、私は今朝早く、この考え: yの場合は、後者が便利です - (has_childrenは($ポストpost_parent))場合は、ちょうど(has_children())かのようにそれを使用するか、またはそれをポスト親を渡すことができ

function has_children($p = null) { 
    global $post, $wpdb; 
    $pid = ($p) ? $p : $post->post_parent; 

    if ($pid) : 
     $r = $wpdb->get_row("SELECT ID FROM $wpdb->posts WHERE post_parent = $pid LIMIT 1"); 
     if ($r) : return true; endif; 
    else : 
     return false; 
    endif; 
} 

get_posts/get_pagesを使用し、グローバル$ post変数は使用しません。

関連する問題