类似于is_page()的函数,但如果在给定页面的任意子页面上,则返回TRUE

时间:2011-06-11 作者:Scott

在我的标题中,我使用以下代码:

if(is_page("stores")) {
    // Do something
}
我在页面上运行了一些代码stores 但是如果页面stores 或作为门店子页的任何页面。不仅如此,而且是递归的,所以如果我们在stores 代码仍在运行。

3 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

当使用漂亮的永久链接时,我只需对照请求进行检查;

if ( preg_match( \'#^stores(/.+)?$#\', $wp->request ) ) {
    // away we go!
} 
没有额外的DB查询,计算量很小,而且可以从树上一直工作!

SO网友:Rarst

Testing for sub-Pages Codex中条件标记文章的一节提供了使用get_post_ancestors() 检索父树并使用check在其中循环。

SO网友:Bainternet

方便的小功能

 function is_child_of($parent) {
    global $post;
    if ( $post->post_parent == $parent){
        return true
    }else{
        $curent_parent = $post->post_parent;
        $dec = false;
        while ($curent_parent > 0){
            $p = get_post($curent_parent);
            $curent_parent = $p->post_parent;
            if ($curent_parent > 0){
                if ($curent_parent == $parent){
                    return true;
                }
            }
        }
    return false;
}
用法:检查current是否是ID为22的页面的子级

if (is_child_of(22)){
  //its a child of 22
}

结束