如果我理解得好WP_Meta_Query 通过Wordpress,您可以通过metas查询帖子。
但我想做的是取回metas;不是帖子。我想获取那些与post ID没有任何关系的meta。
假设我的wp\\U Posteta表中有这些条目:
meta_id | post_id | meta_key | meta_value
1269 21 vote_up 1
1268 37 vote_up 17
1267 12 vote_down 1
1266 41 vote_up 3
1265 98 vote_down 3
此处的meta\\u value列中填充了用户ID。
我想做的是有一个计算行数的函数
通过meta\\u值(用户id)
通过meta\\u键(投票)并最终使用某些标准过滤结果:例如,忽略未发布帖子的行。例如:。
function bbpvotes_get_votes_up_by_user_count( $user_id = 0 ){
if (!$user_id) $user_id = get_current_user_id();
//meta args
$metas_args = array(
\'key\' => \'vote_up\',
\'value\' => $user_id
);
//regular posts args (I would to limit the results to those; so for example unpublished posts will not be returned)
$post_args = array(
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
);
//...
return count($returned_metas);
}
是否有WP核心功能来执行此操作?谢谢
SO网友:Margaret
查看上的部分$wpdb->get_results(), 它允许您向数据库发送不同的查询,这听起来像是您想要做的事情。
所以
// 1st Method - Declaring $wpdb as global and using it to execute an SQL query statement that returns a PHP object
global $wpdb;
$results = $wpdb->get_results( \'SELECT meta_key, count(meta_key) as votes FROM wp_postmeta WHERE meta_value= \' . $user_id . \' GROUP BY meta_key\' );
这将为用户返回一个名为$results的数组,其中包含以下数据:
meta_key | votes
-----------------
vote_up | 15
vote_down| 3
如果要使用标准函数,另一个选项是获取所有相关的post\\u id,并使用
get_post_meta( $post_id, $key )
然后用PHP组织数据,但上面的方法更有效。