WordPress:获取现有页面的子页面';s ID返回空数组
ID等于7的页面被定义为2个页面的父页面(在后台完成) 我创建了这个短代码: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
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 );