Questions tagged «meta-query»

指内置于WP_Query类的机制,用于根据帖子元数据查询数据库中的帖子数据,包括页面和CPT。

4
meta_query尚未设置的键
我正在尝试查询画廊系统的自定义帖子类型。我有一个复选框可以将画廊设置为“特色”画廊(通过“更多字段”插件设置)-如果选中此复选框,则meta值将变为1,如果未选中,则其变为0。一切都很好。但是,如果从未选中该框,那么就不会创建元密钥,这意味着我无法查询NOT LIKE 1,因为它不存在。 我想要的查询是提取4个在此元值中未标记为“ 1”的画廊,以及那些根本没有此值的画廊。是否有办法始终为新添加的帖子提供此元键的默认值(即,如果未选中此框,则默认情况下始终使其默认为0)还是有办法查询尚未设置的键? 我当前的查询是: $args = array( 'post_type' => 'gallery', 'showposts' => 4, 'meta_key' => 'gal-ID', 'order_by' => 'meta_value', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'main-gal', 'value' => false, ) ), ) ); 我已经尝试过各种尝试,例如“比较” =>“不喜欢”,“!=”等。 有任何想法吗?这张票似乎意味着应该对它进行整理: http://core.trac.wordpress.org/ticket/18158 谢谢!

1
如何使用meta_query来对meta_key进行排序并按日期进行二级排序?
在过去的几天里,我一直在对问题进行故障排除,并且一直在圈里。真的可以用新鲜的眼睛来帮助我回答这个问题... 因此,我正在一个wordpress网站上工作,该网站的帖子具有一些与我需要运行的查询相关的自定义字段:“过期”和“我的排序顺序”。当我运行query_posts时,我希望结果是“ post-expired”不是“ yes”的帖子(此部分在我的代码中有效)。我还希望将结果按“我的排序顺序”的DESC数值排序(也可以使用),如果“我的排序顺序”有关联,我希望按日期对最近的帖子进行二次排序第一。 按日期的第二排序是我遇到麻烦的地方。 这是我现在拥有的代码: <?php $args = array( 'paged' => $paged, 'meta_query'=> array( array( 'key'=>'post-expired', 'value'=> 'yes', 'compare' => '!=' ) ), 'meta_key'=>'my-sort-order', 'orderby'=>'meta_value_num', 'order'=>'DESC' ); $args = array_merge( $args , $wp_query->query ); query_posts( $args ); ?> 使用上面的代码,我正确地获取了未过期的帖子,并且按照我的排序顺序降序对它们进行了排序(即100出现在99之前,依此类推)。但是,如果两个帖子都具有相同的排序顺序值,那么就会发生某种二级排序,我似乎无法控制(并且无法弄清楚它实际上是在排序的)。 解决此问题的第一个想法是,如果我想为该帖子设置特定的排序顺序,则仅将值添加到“我的排序顺序”。我以为如果其余帖子的此字段的值都留为空白,则它们将按照DESC日期的默认排序方式简单返回(按设置排序顺序的帖子之后)。但是,实际上发生的是,没有设置排序顺序值的所有帖子都根本没有返回... 接下来,我尝试在orderby字段中添加多个值,如下所示: ('orderby'=>'meta_value_num date') 这完全炸毁了我想要的两个排序顺序,并以意外的方式退回了帖子。我的印象是允许使用多个orderby值,但是由于某些原因,它在这里不起作用。 在这一点上,我不确定如何使这些潜在的解决方案中的任何一个起作用。有谁知道我该怎么做?1)首先按“我的排序顺序”字段对帖子进行排序,然后使用默认的日期排序返回该字段中没有值的其余帖子;还是2)弄清楚如何通过排序来控制次要顺序,以便任何与“我的排序顺序”相关的帖子都将按日期进行排序(最新的优先)?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.