WPDB类有一个专门设计用于从查询返回一个值的函数,$wpdb->get_var()
返回单个值,如果没有结果,则返回null。
我将为这个函数提供一个可选的代码示例,这样您就可以看到它是以另一种方式实现的。
function wpfp_get_count( $id = false ) {
global $wpdb;
if( !$id )
$id = get_the_ID();
$favorite_count = $wpdb->get_var( $wpdb->prepare( "
SELECT CAST(COALESCE(pm.meta_value,0) AS UNSIGNED)
FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p
ON pm.post_id = p.ID
WHERE p.post_status = \'publish\'
AND pm.meta_key = \'wpfp_favorites\'
AND p.post_id = %d
LIMIT 1
", $id ) );
if( !$favorite_count )
return 300;
return $favorite_count + 300;
}
我们将元值强制转换为查询内部的整数,并处理从连接返回的空值(例如,如果没有要连接的记录)。
不知道为什么要向结果中添加300,但这正是您所要求的,所以我只是将其直接放入函数中(如果您想根据调用位置添加不同的数量,它也可以是函数中的第二个参数)。
可以找到有关WPDB类的更多信息here.
Example usage:
<?php printf( \'TOTAL FAVORITES: %d\', wpfp_get_count() ); ?>
或者如果你想传递身份证。。
<?php printf( \'TOTAL FAVORITES: %d\', wpfp_get_count( $var_with_id ) ); ?>
希望这有帮助。