Get posts by meta value

时间:2014-05-11 作者:Beginner

我想列出所有有cp_annonceur 具有值professionnel.

6 个回复
SO网友:s_ha_dum

你要的是meta_query

$args = array(
   \'meta_key\' => \'custom-meta-key\',
   \'meta_query\' => array(
       array(
           \'key\' => \'cp_annonceur\',
           \'value\' => \'professionnel\',
           \'compare\' => \'=\',
       )
   )
);
$query = new WP_Query($args);
All of the information you need is in the Codex.

SO网友:kaiser

有两种方法可以做到这一点:

截取上的主查询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\' );
} );
添加其他查询

$second_loop = get_posts( array(
    \'meta_key\'   => \'cp_annonceur\',
    \'meta_value\' => \'professionnel\',
) );
可以在中找到更全面的示例this answer.

SO网友:michalzuber

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

$posts = $wpdb->get_results("SELECT * FROM $wpdb->postmeta
WHERE meta_key = \'cp_annonceur\' AND  meta_value = \'professionnel\' LIMIT 1", ARRAY_A);
灵感来自https://tommcfarlin.com/get-post-id-by-meta-value/

SO网友:Jitendra Damor

我们可以通过WordPress的元查询获得所需的结果:

// the meta_key \'diplay_on_homepage\' with the meta_value \'true\'
$cc_args = array(
    \'posts_per_page\'   => -1,
    \'post_type\'        => \'post\',
    \'meta_key\'         => \'cp_annonceur\',
    \'meta_value\'       => \'professionnel\'
);
$cc_query = new WP_Query( $cc_args );
有关元查询的更多详细指南,请访问以下博客:http://www.codecanal.com/get-posts-meta-values/

SO网友:Prappo

您可以使用WordPress的内置函数get_posts您可以找到有关get_posts 在这里https://developer.wordpress.org/reference/functions/get_posts/

$posts = get_posts(array(
    \'numberposts\'   => -1,
    \'post_type\'     => \'post\',
    \'meta_key\'      => \'cp_annonceur\',
    \'meta_value\'    => \'professionnel\'
));

SO网友:Tayyab Chaudhary

试试这个,对我有用

global $wpdb;
$meta_key = \'_request_body\';

$data = $wpdb->get_results($wpdb->prepare( "SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key) , ARRAY_N  );

$result = [];
foreach($data as $array){
    $result[] = $array[0];
}

print_r($result);

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在