这里的问题有两个方面。
Firstly, 您正在使用\'parent\' => $post->ID,
. $post
是一个全局变量,而不是超全局变量,因此您必须声明您打算使用它,然后才能使用:
global $post;
但是,与往常一样,使用API比使用原始数据更容易,您最好使用:
\'parent\' => get_the_ID(),
甚至更好的是,如果我们应用良好的编码实践,我们可以得到:
function display_child_pages( $post_id=0 ){
...
\'parent\' => $post_id,
<?php display_child_pages( get_the_ID() ); ?>
现在,该函数清楚地声明了它的功能,并且可以输出任何页面的子页面,而不仅仅是我们当前所在的页面。由于
post_id
论点
请注意,上面的函数应该响应,而不是返回HTML,否则最终会鼓励提前转义以及随之而来的所有安全问题。
Secondly, 您的查询正按照您的要求执行,但它比您的想法更加明确。
该查询要求所有具有父X的帖子,由于上述错误,在本例中父X为0。虽然子帖子没有父帖子,但它们有不同的父帖子!
要解决这个问题,您需要递归树,对每个链接运行一个查询以查找其子链接,并对每个子链接运行一个查询以查找其子链接。parent
只看parent
, 它不会世代相传。
例如,“父2”不是“子1a”的父。“Child 1”是“Child 1a”的父母。这就是为什么查询没有提取它。
其他注意事项请勿使用get_pages
, 使用WP_Query
取而代之,去掉中间人,速度会快一点,所有参数都一样,如果没有孩子会怎么样?没有检查是否get_pages
实际找到了您使用的任何页面get_post_thumbnail_id
但是你永远不会检查页面是否有特色图片,如果没有特色图片,就不可能单击链接,甚至看不到它这是什么\'child_of\' => $post->ID,
? 没有child_of
参数,这看起来像是猜测。为什么要猜测一下,在下面的Codex上有所有受支持选项的完整列表WP_Query
?