我想列出所有有cp_annonceur
具有值professionnel
.
Get posts by meta value
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);
结束