如何控制侧栏小工具帖子中帖子浏览量的增加?

时间:2016-09-13 作者:Krishna Karki

我有一个帖子计数的代码,它几乎适合我,但当我申请时<?php echo tie_views();?> 在最近流行或相关的帖子列表中。岗位数量也在增加。我想控制它,只有它在单发中有效。有人能帮我吗?

 function tie_views(){
global $post;       

$count_key  = \'tie_views\';
$count      = get_post_meta($postID, $count_key, true);
$count      = @number_format($count);    

if( !defined(\'WP_CACHE\') || !WP_CACHE ){
    $count++;
    update_post_meta($postID, $count_key, (int)$count);
}
elseif( ($count) ){
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, 0 );
    $count = 0;
}


return \'<div class="post-view"><span>\'.$count.\'</span> \' .__( \'Views\' , \'tie\').\'</div>\';
}

1 个回复
SO网友:bosco

在几个单独的注释中:

我想你的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>\';
    }
    

    相关推荐

    GET_POSTS查询大约需要40秒来执行

    我在get\\u帖子中有一个元查询,它需要花很长时间才能完成。它工作得很好,但只是时间太长了。我有一个名为event. 在每个event 发布后,有自定义元数据:post\\U sort\\U日期(事件日期YmdHis 格式,用于排序)我需要做的是获取下一个事件,该事件相对于$year 和$month 变量。所以如果$year = 2021 和$month = 10 (2021 10月)然后应该在2021 11月或之后找到第一个事件。我下面的查询很好,但很慢。执行大约需要40秒,我不知道为什么。$next