看来,如果传递给get_pages()的args指定了多个元键,则只考虑最后一个元键。我有下面的代码,指定两个元键:
只有63页有一个listing.php的模板,所以没有第107和108行,我得到63页。如果我包含107和108,我会得到234页,其中很少有list.php的模板。因此看起来该函数仅采用args中的最后一个元规范。这似乎不在文档中。有没有办法要求页面在两个元键中具有特定值?
由于
答案 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"