_wp_page_template在get_pages中返回空数组

时间:2017-09-07 10:49:46

标签: php wordpress

根据其他人的帖子以及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.phpsingle.php等。模板文件存在且正在使用。

当我将其更改为偶数page.php时,我可以确认有问题,返回时数组仍为空。

我有什么遗漏吗?

更新

感谢下面的回复,这确实解决了我的问题。但是,我现在想问一下是否可以有多个页面模板?

如果我尝试下面的操作,返回的数组只包含在数组中找到的最后一个模板。

<?php $procedures = get_pages(array(
    'meta_key' => '_wp_page_template',
    'meta_value' => array('template-procedure.php', 'template-procedure-minimal.php')
)); ?>

1 个答案:

答案 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