我想列出所有键为cp_annonceur且值为professionnel的帖子。

评论

请注意,在发布问题之前,您应该已经研究了该问题并尝试解决该问题。如果您不是这里的新手,我可能会否决这个问题,然后继续前进,而不是回答它。本着“ Welcome to the Stack”的精神,这是您的自由蜂。请看一下如何问以后的问题。

由于以下未接受的回答,这使我浪费了一些时间。所以我要把我的两分钱留在这里。他从未回答,也没有接受下面的答案。为什么这里周围有许多类似的问题,您为什么不删除这些问题呢?

#1 楼

您需要的是meta_query

$args = array(
   'meta_query' => array(
       array(
           'key' => 'cp_annonceur',
           'value' => 'professionnel',
           'compare' => '=',
       )
   )
);
$query = new WP_Query($args);


您需要的所有信息都在法典中。

评论


@Beginner:如果此方法解决了问题,请将其标记为“已接受”。在左侧的投票箭头附近寻找对勾标记。

– s_ha_dum
2014年5月11日20:35

由于某些原因,使用新的WP_Query($ args)然后调用get_posts对我不起作用。但是直接将$ args数组作为参数传递给get_posts函数。

–库纳尔
20-5-5在21:24



#2 楼

有两种方法可以执行此操作:



拦截对pre_get_posts的主要查询: />添加其他查询

add_action( 'pre_get_posts', function( $query )
{
    // only handle the main query
    if ( ! $query->is_main_query() )
        return;

    $query->set( 'meta_key',   'cp_annonceur' );
    $query->set( 'meta_value', 'professionnel' );
} );



可以在此答案中找到更多示例。

评论


很高兴知道get_posts()的简短方法

–安德鲁·韦尔奇(Andrew Welch)
17年1月26日在16:06

如何使用多个meta键/值来做到这一点?

–G Hbr /> 20年4月9日在22:57

@ G-J您可能想看一下这个例子。

– kaiser
20年4月15日在15:18

#3 楼

我使用了自定义选择(可能会更好地实现性能)

$posts = $wpdb->get_results("SELECT * FROM $wpdb->postmeta
WHERE meta_key = 'cp_annonceur' AND  meta_value = 'professionnel' LIMIT 1", ARRAY_A);
br />

评论


它可能具有更好的性能,但是却放弃了使用Wordpress函数搜索(和缓存)数据的整个想法。而且,如果WP决定更改表结构,将会发生什么? :)

– Erenor Paz
17年3月3日在10:11

@ErenorPaz我明白您在说什么,但是如果您有多个元键/值作为条件,这种方式将使操作变得容易。是否有处理多个条件的官方方法?

– G-J
20年4月9日在22:59

您的意思是类似WHERE metatable1.meta_key ='cp_annonceur'AND metatable1.meta_value ='professionnel'AND metatable2.meta_key ='cp_other_meta'AND metatable2.meta_value ='other_value'吗? (请注意,我想我们使用两个名称metatable1和metatable2在同一posts_meta表上进行联接)。这可以通过将字段meta_query(作为数组)添加到查询中来实现。看一下:developer.wordpress.org/reference/classes/wp_query/…并转到“带有多个“ meta_key”的“ orderby”段落

– Erenor Paz
20-4-10的11:19

#4 楼

我们可以通过WordPress的元查询获得所需的结果: / get-posts-meta-values /

评论


我可以知道为什么此post_per_page值为-1吗?

–阿拜
18年4月27日在5:07

@AbhayGawade您可以使用该参数来限制最大结果数,-1表示没有限制。

–库什
18年6月20日在17:49