检查是否为父页面,是否有孩子,是否有孙子页面

时间:2015-03-23 作者:laura.f

我有一个默认页面模板,我希望用于两种场景。为了简化我的客户,我宁愿只使用一个页面模板。

以下是我正在努力实现的目标:

if parent_page OR if child-page without children {
  display full-width-layout
}
if child page with children or if grandchild page {
  display sidebar-menu-layout
}
这可能吗?

这就是我迄今为止所尝试的:

if( is_page() && $post->post_parent > 0 ) {
  //display sidebar-menu-layout
} else {
  //display full-width-layout
}
它可以在顶层页面上显示全宽布局。但是,如何确保侧边栏菜单布局显示在有子级的子页面上,以及仅显示在grandchile页面上?对于没有子页面的子页面,显示全宽布局。

提前谢谢。我相信它有一个简单的解决方案,我只是对WP相对较新,所以仍在尝试找出什么可以做,什么不能做。

2 个回复
最合适的回答,由SO网友:laura.f 整理而成

在阅读Bravokeyl提供的解决方案之前,我最终通过反复试验,找到了一个适合我的解决方案。我不确定哪一个更好,或者最正确,我只知道我的对我有用,因为我有这个问题。

这是我用来显示全幅布局或侧栏菜单布局的代码:

if( is_page() && $post->post_parent > 0 ) { 
  // post has parents

  $children = get_pages(\'child_of=\'.$post->ID);
  if( count( $children ) != 0 ) {
    // display sidebar-menu layout
  }

  $parent = get_post_ancestors($post->ID);
  if( count( $children ) <= 0  && empty($parent[1]) ) {
    // display full-width layout
  } elseif ( count( $children ) <= 0  && !empty($parent[1]) )  {
    // display sidebar-menu layout
  }

} else {
  // post has no parents
  // display full-width layout
}

SO网友:bravokeyl

Level-0
--Level-1
----Level-2
------Level-3
----Levelanother-2
--Levelanother-1
检查页面是否为顶级页面(它可能有子页面或没有子页面)?

$post->$post_parent == 0 或为空get_post_ancestors( $post ) 仅返回0级页面。

是否为子页,是否仅为Level-1页或LevelOther-1页?

$post->$post_parent > 0 或不为空get_post_ancestors( $post ) 并且是空的get_post_ancestors( $post->post_parent )

是level-1页,但没有像LevelOther-1页那样的子级?

$post->$post_parent > 0 或不为空get_post_ancestors( $post ) 并且是空的get_post_ancestors( $post->post_parent )count(get_children( $post ->ID, \'ARRAY_A\' )) == 0 ..

我还没有检查这个。。但它应该工作得很好。您还可以使用get\\u page\\u children()和get_posts()

结束

相关推荐

Execute php in pages

我需要在wordpress中执行我的个人php代码来打印mysql数据库中的数据。我只能在页面上执行。我的想法是创建一个文件页pagename。php,复制页面主体。php模板并更改此代码:<?php while ( have_posts() ): the_post(); ?> <article <?php post_class(\'group\'); ?>> <?php get_temp