您可以使用以下命令运行自定义查询,以统计具有给定键的帖子数量$wpdb
或更具体地使用get_var()
. 如果我假设您想用给定的键统计已发布的帖子,那么下面的内容应该可以做到这一点。。(尽管这只是一个例子)。
function get_meta_count( $key = \'\', $type = \'post\', $status = \'publish\' ) {
global $wpdb;
// Example code only
// Good idea to add your own arg checking here
if( empty( $key ) )
return;
$r = $wpdb->get_var( $wpdb->prepare( "
SELECT COUNT(*) as count FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = \'%s\'
AND p.post_status = \'%s\'
AND p.post_type = \'%s\'
", $key, $status, $type ) );
return $r;
}
根据需要回显或存储返回的值。如果您打算传入用户请求或发送的任何数据,则需要在函数中添加一些进一步的数据检查。
NOTE: 如果您在管理页面上执行此操作,那么可能有一个内部函数可以使用(我现在不记得具体是哪个,但如果您需要管理方面的内容,我会查找它)。
希望在任何情况下都能有所帮助。
Addition:Viper发帖后,我很好奇这两个查询之间会有多大差异,所以我每次都打了5次电话,并记录了时间。。
$wdbb->get_var
Script Execution Time: 0.004 seconds
Script Execution Time: 0.004 seconds
Script Execution Time: 0.004 seconds
Script Execution Time: 0.004 seconds
Script Execution Time: 0.004 seconds
// Yes i realise the results are all the same above, that\'s how they came out
get_posts()
Script Execution Time: 0.035 seconds
Script Execution Time: 0.04 seconds
Script Execution Time: 0.03 seconds
Script Execution Time: 0.027 seconds
Script Execution Time: 0.04 seconds
我会注意到
get_posts
给了一个找不到的meta\\u键,然后返回的结果更接近
$wpdb
速度,但仍低于
$wpdb
方法每次至少快2倍。
认为我的结果有缺陷吗?请执行您自己的测试,如果您想要我使用的代码的副本,您可以在裸体形式中找到它here.
Viper确实有一个有效的观点(未来证明总是一件好事),我只是想说明这两种方法之间存在一些可衡量的差异(如果有人发现我的方法有问题,请随时告诉我)。