无法为get_pages()提供多个meta_key

时间:2016-12-09 00:33:11

标签: wordpress

看来,如果传递给get_pages()的args指定了多个元键,则只考虑最后一个元键。我有下面的代码,指定两个元键:

enter image description here

只有63页有一个listing.php的模板,所以没有第107和108行,我得到63页。如果我包含107和108,我会得到234页,其中很少有list.php的模板。因此看起来该函数仅采用args中的最后一个元规范。这似乎不在文档中。有没有办法要求页面在两个元键中具有特定值?

由于

1 个答案:

答案 0 :(得分:1)

你拥有的数组并不有效。您不能多次使用数组键。如果数组键重复,它将覆盖最后一个。

我做了一些在线搜索,并在Wordpress SE上发现了这篇文章:https://wordpress.stackexchange.com/questions/40322/query-multiple-meta-key-values

看起来它使用meta_query标记来搜索多个键。我检查了documentation for get_pages,但遗憾的是它似乎没有使用meta_query。但它确实链接到名为get_posts的函数,该函数使用meta_query标记。您可以单击此链接以查看其工作原理:https://codex.wordpress.org/Function_Reference/get_posts#Custom_Field_Parameters请注意它如何使用数组数组来定义每个键值对。这样它就不会重复数组键。

您可以像这样使用此功能:

$args = array(
    'post_type' => 'page',
    'meta_query' => array(
        array(
            'key' => '_wp_page_template',
            'value' => 'listing.php',
        ),
        array(
            'key' => 'swept',
            'value' => 'no',
        )
    ),
    'orderby' => 'ID',
    'post_status' => 'publish',
    'order' => 'ASC'

);
$listings = get_posts($args);

请注意,它使用" orderby"而不是" sort_column"和"命令"而不是" sort_order"