WordPress:获取现有页面的子页面';s ID返回空数组

WordPress:获取现有页面的子页面';s ID返回空数组,wordpress,Wordpress,ID等于7的页面被定义为2个页面的父页面(在后台完成) 我创建了这个短代码: add_shortcode('display_children_pages', function($params) { $html_to_display = ''; echo "<pre>"; var_dump(get_the_ID()); echo "</pre>"; echo "<pre>"; var_dump(get_page_c

ID等于7的页面被定义为2个页面的父页面(在后台完成)

我创建了这个短代码:

add_shortcode('display_children_pages', function($params) {
    $html_to_display = '';
    echo "<pre>";
    var_dump(get_the_ID());
    echo "</pre>";
    echo "<pre>";
    var_dump(get_page_children(get_the_ID()));
    echo "</pre>";
    return $html_to_display;
});
add_shortcode('display_children_pages',函数($params){
$html_to_display='';
回声“;
var_dump(获取_ID());
回声“;
回声“;
var_dump(get_page_children(get_the_ID()));
回声“;
将$html\u返回到\u显示;
});
这呼应了:

获取\u ID():int(7)

获取页面子元素(获取页面ID()):数组(0)[]


为什么调用
get_page_children
返回一个空数组而不是page#7的子页面数组?

使用下面的代码将返回所有子页面

add_shortcode('display_children_pages',函数($params){
$html_to_display='';
echo“”;var_dump(获取_ID());echo“”;
$args=数组(
'post_parent'=>获取_ID(),
“发布类型”=>“店铺订阅”
);
$child=新的WP\u查询($args);
如果($child->have_posts()):而($child->have_posts()):$child->the_post();
$childids[]=获取_id();
结束时;
其他:
$childids[]=“未设置”;
endif;
echo“”;var_dump($childId);echo“”;
返回$childids;
});

中缺少了第二个必需参数-请查看文档,但基本上,该函数会过滤传入的页面列表,它不会向DB查询“查找”子页面。为此,您的最佳选择是使用:


谢谢你的帮助,但是这个答案没有帮助:1。你改变了什么?为什么OP的原始代码不起作用?2.你的代码是一个格式化混乱-也许考虑更好地格式化,3。为什么要使用“模板样式”
if
while
语句,而不是“标准”
if($condition){
…4.WP函数区分大小写。例如,它是
获取ID()
,而不是
获取ID()
。。。
 add_shortcode('display_children_pages', function($params) {
            $html_to_display = '';
            echo "<pre>";var_dump(get_the_ID());echo "</pre>";


        $args = array(
          'post_parent'     => get_the_ID(),
          'post_type'       => 'shop_subscription'
        );

        $child = new WP_Query($args);

        if ($child->have_posts()) : while ($child->have_posts()) : $child->the_post();
          $childids[] = get_the_id();  
        endwhile;
        else:
          $childids[] = "not set";
        endif;
         echo "<pre>";var_dump($childids);echo "</pre>";
            return $childids;
});
  $args = array(
      'parent'      => get_the_ID(),
      'post_type'   => 'page',
      'post_status' => 'publish'
  ); 

  $pages = get_pages( $args );