您当前的逻辑是:
if we are a root page: ( we\'re 1 level deep! )
show the children!
but if we are not a root page: ( we\'re 2 levels deep! )
show the siblings/parents children!
你的问题是,当你到达一个三层的页面时会发生什么?我们可以检查我们是否有父母,但我们还需要检查父母是否也有父母,也就是祖父母。
这样就可以做到:
if we are a root page: ( we\'re 1 level deep! )
show the children!
but if we are not a root page: ( we\'re 2 or more levels deep! )
get the parent post
does the parent post have a parent too? AKA a grandparent ( we\'re 3 levels deep! )
show the grand parents children!
but if the parent post does not have a parent ( we\'re 2 levels deep! )
show the parents children!
但很明显,这无法扩展!4层深怎么样?5层深?如果我的页面有一个父级,它有一个父级,它有另一个父级,该怎么办?级别太多!如此混乱,如此多嵌套的if-else语句。
那么我们如何正确地做到这一点呢?
递归
为了得到真正可靠的答案,我们需要使用递归函数。我们不知道我们有多少层,所以我们不能解释每一层。如果没有巨大的if-else语句和噩梦般的代码。
因此,让我们做一些类似的事情:
For post A
do the "show posts" routine to A
其中,“显示帖子”是:
show posts:
if A has no parent
Display the children!!
but if A DOES has a parent
do the "show posts" routine on that parent
在更多类似PHP的代码中:
注意,这是伪代码,而不是实际代码function showPosts( $post ) {
if ( $post->post_parent == 0 ) {
// display the child posts
} else {
// go up one level and try again
showPosts( $post->post_parent );
}
}
$this_page = $wp_query->post;
showPosts( $this_page );
现在,我们有了一个适用于1层深度、2层深度、3层深度的东西。。。。。5000层深、5001层深等