在几个单独的注释中:
我想你的elseif
检查的目的可能是elseif( empty( $count ) )
, 与当前一样,每当WP_CACHE
已设置,并且该立柱具有\'tie_views\'
虽然我可能误解了你的意图一次调用来更新元数据比两次调用来删除它然后再添加它要快
number_format()
生成通常包含非数字字符的字符串。递增此类字符串或将其强制转换为整数将产生各种意外行为(例如。(int)\'5,000\'
生产5
). 只有在执行了所有相关的数学运算后,才能设置数字的格式$postID
从未定义,也不是全局变量。使用get_the_ID()
获取循环中当前帖子的ID使用@
通常不鼓励抑制错误,这通常是不良做法的象征(警告和错误应该纠正或处理,而不是忽略)。在这种情况下,我们可以通过返回到默认整数来消除它0
而不是试图number_format()
null
.所有这些都表明,您可以通过创建布尔值来实现所需的效果
$update
函数的参数。通过这种方式,您可以通过调用
tie_views( true )
或
tie_views( false )
.
更进一步,您可以为函数提供逻辑,以确定在$update
未指定参数。
function tie_views( $update = null ){
$count_key = \'tie_views\';
$post_id = get_the_ID();
$count = get_post_meta( $post_id, $count_key, true );
// If no \'tie_views\' meta-data exists for this post, then the count is 0
if( empty( $count ) )
$count = 0;
// If $update was not set, set it to \'true\' if in the main loop and displaying one post.
if( null === $update )
$update = in_the_loop() && is_singular();
// If the count should be updated and advanced caching is disabled,
// increment the count and save it\'s new value.
if( $update && ( !defined( \'WP_CACHE\' ) || !WP_CACHE ) )
update_post_meta( $post_id, $count_key, ++$count );
// Return markup with a formatted count-string
return \'<div class="post-view"><span>\' . number_format( $count ) . \'</span> \' . __( \'Views\' , \'tie\' ) . \'</div>\';
}