根据其他人的帖子以及get_pages()
的{{3}},您可以使用特定模板类型过滤页面返回的数组。
然而,对我来说这不起作用,我不知道为什么,我只是返回一个空数组。
这是我的确切代码:
<?php $procedures = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'template-procedure-minimal.php'
)); //var_dump($procedures); ?>
<select name="procedureID" id="procedureID" class="form-control">
<?php foreach($procedures as $p) {
echo '<option value="'.$p->ID.'"';
if($p->ID == $bv_set->procedureID) {
echo ' selected="selected"';
}
echo '>'.$p->post_title.'</option>';
} ?>
</select>
我正在指定的模板文件位于我当前主题的根目录中,以及标准page.php
,single.php
等。模板文件存在且正在使用。
当我将其更改为偶数page.php
时,我可以确认有问题,返回时数组仍为空。
我有什么遗漏吗?
更新
感谢下面的回复,这确实解决了我的问题。但是,我现在想问一下是否可以有多个页面模板?
如果我尝试下面的操作,返回的数组只包含在数组中找到的最后一个模板。
<?php $procedures = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => array('template-procedure.php', 'template-procedure-minimal.php')
)); ?>
答案 0 :(得分:3)
您应该将hierarchical
参数添加到get_pages
函数中,如下所示:
<?php $procedures = get_pages(array(
'meta_key' => '_wp_page_template',
'meta_value' => 'template-procedure-minimal.php',
'hierarchical' => 0
)); ?>
此处有更多详情https://codex.wordpress.org/Function_Reference/get_pages