好吧,它返回了错误的数字,因为您完全是这样编码的;)
您的WP\\U查询正确。因此,当没有符合您条件的帖子时,您将得到0。
但如果有这样的帖子,那么。。。完全忽略查询并返回wp_count_posts
因此。。。但是
此函数返回一个对象,其属性是一个post类型的每个post状态的计数。它不计算给定查询中的帖子,在您的情况下,它不能这样做(这个函数现在应该如何计算哪个查询的帖子?)
下面是正确形式的代码:
add_shortcode(\'count_usr_msg\',\'count_usr_msg\');
function count_usr_msg($atts){
$usr_id = $atts[\'usr_id\'];
$args = array(
\'post_type\' => \'usr_msg\',
\'meta_query\' => array(
array(
\'key\' => \'posted_user_id\',
\'value\' => $usr_id,
\'compare\' => \'=\',
)
)
);
$usr_msg = new WP_Query( $args );
return $usr_msg->found_posts;
}
我们不用检查某些条件,而是使用
found_posts
, 其中包含:
找到的与当前查询参数匹配的帖子总数
并将其作为值返回。