Questions tagged «meta-query»

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

12
使用元值作为序列化数组的meta_query
我正在一个项目中,在其中创建自定义帖子类型和通过与我的自定义帖子类型相关联的元框输入的自定义数据。不管出于什么原因,我决定以这样一种方式对元框进行编码,以使每个元框中的输入都是数组的一部分。例如,我要存储经度和纬度: <p> <label for="latitude">Latitude:</label><br /> <input type="text" id="latitude" name="coordinates[latitude]" class="full-width" value="" /> </p> <p> <label for="longitude">Longitude:</label><br /> <input type="text" id="longitude" name="coordinates[longitude]" class="full-width" value="" /> </p> 无论出于何种原因,我都喜欢为每个元框都使用一个单一的postmeta条目的想法。在save_post钩子上,我像这样保存数据: update_post_meta($post_id, '_coordinates', $_POST['coordinates']); 我这样做是因为我有三个metabox,每个帖子只有3个postmeta值;但是,我现在意识到了一个潜在的问题。我可能想使用WP_Query仅根据这些元值提取某些帖子。例如,我可能想获取所有纬度值大于50的帖子。如果我单独在数据库中拥有此数据,也许使用key latitude,我将执行以下操作: $args = array( 'post_type' => 'my-post-type', 'meta_query' => array( array( 'key' => 'latitude', 'value' => '50', 'compare' => '>' …

2
Meta_query比较运算符说明
我注意到在meta_query中可以使用一堆运算符进行比较。但是,我不太确定我应该使用什么运算符,就像=和LIKE运算符一样令人困惑。 我想知道每个操作员的确切含义,以及在什么情况下应该使用它们。 = != > >= < <= LIKE NOT LIKE IN NOT IN BETWEEN NOT BETWEEN NOT EXISTS 谢谢。

9
将元查询('meta_query')与搜索查询('s')一起使用
尝试构建不仅搜索默认值(标题,内容等)而且搜索特定自定义字段的搜索。 我当前的查询: $args = array( 'post_type' => 'post', 's' => $query, 'meta_query' => array( array( 'key' => 'speel', 'value' => $query, 'compare' => 'LIKE' ) ) ); $search = new WP_Query( $args ) ... 这将返回与搜索查询和元查询都匹配的帖子,但我也希望它还返回与其中任何一个匹配的帖子。 有任何想法吗?

3
具有多个关系键的嵌套meta_query
我很好奇Wordpress是否可以嵌套运行meta_query,每个都有不同的关系键?从Wordpress 3.0开始,tax_query可以执行此功能;我想知道这是否与等效meta_query。 $results = query_posts( array( 'post_type' => 'event_id', 'meta_query' => array( 'relation' => 'AND', array( 'relation' => 'OR', array( 'key' => 'primary_user_id', 'value' => $user_id ), array( 'key' => 'secondary_user_id', 'value' => $user_id ) ), array( 'key' => 'date', 'value' => array( $start_date, $end_date ), 'type' => 'DATETIME', 'compare' …

5
如何创建带有数组作为meta_field的meta_query?
这是我的查询的参数: $args = array( 'post_type' => 'news', 'meta_query' => array( array( 'key' => 'topics', 'value' => 'sports', ) ) ); 当topics为字符串时有效,但为数组时无效。我希望这个查询在topics例如array( 'sports', 'nonprofit', etc. ) 有没有一种方法可以使用数组作为meta_key构建元查询?
16 query  meta-query 

4
使用WP REST API 2过滤多个自定义字段
我想基于具有AND关系的多个acf自定义字段来过滤帖子。像这样: $args = array( 'post_type' => 'product', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'color', 'value' => 'blue', 'compare' => '=', ), array( 'key' => 'price', 'value' => array( 20, 100 ), 'type' => 'numeric', 'compare' => 'BETWEEN', ), ), ); 我什至可以拥有更多过滤器。如何将它们转换为REST API 2过滤器?

2
meta_query'比较'=>'IN'不起作用
首先,我知道这是重复的,但是较旧的答案都没有帮助。 我正在通过中搜索帖子post_meta。这是我的代码,目前不返回任何内容。 $args = array( 'numberposts' => -1, 'post_type' => 'post', 'meta_query' => array( array( 'key' => 'system_power_supply', 'value' => array('single', 'redundant'), 'compare' => 'IN', ) ) ); $query = new WP_Query($args); echo $query->found_posts; 如果我删除meta_query它的作品。我确信这些事情: key或中没有拼写错误value。 帖子类型为 post 还有就是在“system_power_supply”值“单”后。但是,帖子字段是由高级自定义字段生成的。

2
在WP_Query meta_query键中使用REGEXP
我知道我可以像这样在WP_Query中使用REGEXP: $query = new WP_Query(array( 'posts_per_page' => -1, 'post_status' => 'publish', 'meta_query' => array( array( 'key' => 'custom_fields', 'value' => 'foo[(][0-9][)]', // with regex stuff 'compare' => 'REGEXP', ), ), )); 但是我也需要键中的正则表达式。像这样: $query = new WP_Query(array( 'posts_per_page' => -1, 'post_status' => 'publish', 'meta_query' => array( array( 'key' => 'custom_fields[(][0-9][)]', // …

1
使用meta_query,如何按自定义字段过滤并按另一字段排序?
使用以下代码(在functions.php中),我的CPT事件帖子按_end_date而不是_start_date排序。从WP 3.1.3开始,对此有什么适当的解决方案?当然,我想避免使用已弃用的meta_key。 add_filter( 'pre_get_posts', 'my_get_posts' ); function my_get_posts( $query ) { if ( is_home() ) { $query->set( 'post_type', 'event' ); $query->set( 'meta_key', '_start_date' ); $query->set( 'orderby', 'meta_value_num' ); $query->set( 'order', 'ASC' ); $query->set( 'meta_query', array( array( 'key' => '_end_date', 'value' => time(), 'compare' => '>=', 'type' => 'numeric' ) ) …

2
通过多个元键查询WP REST API v2
使用REST API的v2,我想通过多个元键查询一些帖子。使用v1,我能够像这样设置url的格式,&filter[meta_value][month]=12&[meta_value][year]=2015并且可以正常工作(在将元值公开给API之后)。 现在使用v2,我只能通过使用此GitHub线程上列出的方法来使它起作用:https : //github.com/WP-API/WP-API/issues/1599#issuecomment-161166805 基本上,使用以下rest_query_vars过滤器添加了meta字段: add_filter( 'rest_query_vars', 'flux_allow_meta_query' ); function flux_allow_meta_query( $valid_vars ) { $valid_vars = array_merge( $valid_vars, array( 'meta_key', 'meta_value', 'meta_compare' ) ); return $valid_vars; } 这样,我就可以使用url这样的网址来过滤一个元键wp-json/wp/v2/posts?filter[meta_key]=test&filter[meta_value]=on。 但是,听起来对多个元键进行过滤的唯一方法是编写自定义过滤器。有人可以指出我这样做的正确方向吗?

1
在首页上混合常规和自定义帖子类型(使用meta_query)
不知道如何实现这一目标。我试图在网站首页上混合标准帖子和自定义帖子,但是我只想在设置了元值的情况下显示自定义帖子。显示帖子效果很好,'post_type' => array('game', 'post')但是当我添加meta_query时,常规帖子不再显示(这很有意义,因为它们不符合meta_query条件)。 因此,如何将meta_query限制为仅自定义帖子类型,以便仍包含常规帖子?

4
在get_posts()中为meta_query参数设置别名
有没有办法在运行meta时在meta_query参数上设置别名get_posts()?我的查询之一表现不佳。为了进行优化,我只需要能够重用相同的联接表,而不是只需要一个表就联接3个表。 我目前的例子 $args = array( 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => array('puppy', 'kitten'), 'compare' => 'IN', ), array( 'relation' => 'OR', array( 'relation' => 'AND', array( 'key' => 'abc_type', 'value' => 'puppy', 'compare' => '=', ), array( 'key' => 'abc_color', 'value' => 'pink', 'compare' …

2
排序:使用orderby meta_value_num然后按标题排序的自定义查询
我尝试运行自定义帖子类型查询以匹配以下条件: 首先按年份降序对电影进行排序, 然后按名称标题(在“年内”进行排序)。 所需的输出: 电影标题A,2006 电影标题Z,2006 ... 电影标题A,1996 电影标题Z,1996 我使用以下代码: $wp_query = new WP_Query(); $wp_query->query( array( 'post_type' => 'movies', 'distribution' => 'companyA', 'meta_key' => 'year', 'orderby' => 'meta_value_num title', 'order' => 'DESC', 'posts_per_page' => -1, 'post_status' => 'publish', )); 我尝试了几件事,但我只能得到这个“反”结果: 电影A,1996 电影Z,1996 ... 电影A,2006 电影Z,2006 如果我更改DESC,ASC,则仅更改标题排序。但我需要将其应用于年份而不是标题。 使用两个ord​​erby值是正确的方法吗?还是我必须使用meta_query或自定义SQL? 提前谢谢! 这是从中得到的SQL查询 $GLOBALS['wp_query']->request …

2
meta_query按2个键排序
我需要按2个自定义字段值对(自定义)帖子进行排序... 自定义字段名称1:is_sponsored[值可以是1或0] 自定义字段名称2:sfp_date[ timestampaka当前发布日期,以秒为单位] “ is_sponsored”值为1的帖子需要放在最上面,并按“ sfp_date”的DESC结尾顺序排序。is_sponsored值“ ”为0的所有其他帖子也应在下方列出-降序排列(按“ sfp_date”)。 我有类似的东西: $sfp_query_args = array( 'tax_query' => array( array( 'taxonomy' => 'sfp_posts', 'terms' => array( 1, 5, 8 ) ) ), 'post_type' => 'sfpposts', 'post_status' => 'publish', 'showposts' => 15, 'paged' => $paged, 'meta_key' => 'sfp_date', 'orderby' => 'meta_value_num', 'order' => 'DESC', …

3
具有3个键的复杂元查询
我认为问题本质上与sql查询结构有关,我不是专家...。 我需要通过2个参数搜索帖子(自定义帖子类型): pd_city pd_country 请注意,meta_query关系为“ OR”,因此,如果以上两个条件中的任何一个为LIKE,我们都将得到一些结果。 第三个键(is_sponsored)用于对帖子进行排序!它可以是1或0,并且其“ is_sponsored”值等于1的帖子应列在顶部。 所以这是WordPress的事情: $sfp_query_args = array( 'sfp_complex_search' => 'yeap', 'tax_query' => array( array( 'taxonomy' => 'sfp_post_category', 'terms' => $term_id ) ), //'meta_key' => 'is_sponsored', 'post_type' => 'sfpposts', 'post_status' => 'publish', 'showposts' => (int)$per_page, 'paged' => $paged, 'meta_query' => array( 'relation' => 'OR', array( 'key' …

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.