_wp_page_template 在 get_pages 中返回空数组

Lee*_*Lee 1 php wordpress

根据其他的职位,以及文档get_pages(),您可以过滤通过真实页面只使用一个特定的模板类型返回的数组。

但是,对我来说这不起作用,我不知道为什么,我只是返回了一个空数组。

这是我的确切代码:

<?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>
Run Code Online (Sandbox Code Playgroud)

我specificing模板文件是在我的当前主题的根,与标准一起page.phpsingle.php等模板文件存在,并且正在使用。

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

有什么我想念的吗?

更新

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

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

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

小智 5

您可能应该像这样hierarchicalget_pages函数添加参数:

<?php $procedures = get_pages(array(
    'meta_key' => '_wp_page_template',
    'meta_value' => 'template-procedure-minimal.php',
    'hierarchical' => 0
)); ?>
Run Code Online (Sandbox Code Playgroud)

更多细节在这里https://codex.wordpress.org/Function_Reference/get_pages