首页建站经验 WP-PostViews插件显示设定时间内热门文章的方法

WP-PostViews插件显示设定时间内热门文章的方法

不知道出于什么原因,1.30后的WP-PostViews插件取消了原先存在的get_timespan_most_viewed函数,这也是最近在网上得知的,因为最近有心情修改主题、插件,博客上面这个插件提供的小…

不知道出于什么原因,1.30后的WP-PostViews插件取消了原先存在的get_timespan_most_viewed函数,这也是最近在网上得知的,因为最近有心情修改主题、插件,博客上面这个插件提供的小工具在边栏的显示内容几个月都不怎么变,原因很简单,设置的是浏览最多的文章,自然多的越来越多了,于是想修改下显示设置,很遗憾后台没有相关设置,虽然有最近的,但是好像还不是我要的结果。

百度一阵子才知道原先这个插件有这个功能的,现在没有了,但是有人在网上共享了之前的函数,这样就简单多了。把以下函数复制到wp-postviews.php文件的任意地方(当然是要合适点的任意地方,不要放其他函数中间就ok了)。

functionget_timespan_most_viewed($mode='',$limit=20,$days=1,$display=true){

global$wpdb,$post;

$limit_date=current_time('timestamp')-($days*86400);

$limit_date=date("Y-m-dH:i:s",$limit_date);

$where='';

$temp='';

if(!empty($mode)&&$mode!='both'){

$where="post_type='$mode'";

}else{

$where='1=1';

}

$most_viewed=$wpdb->get_results("SELECTDISTINCT$wpdb->posts.*,(meta_value+0)ASviewsFROM$wpdb->postsLEFTJOIN$wpdb->postmetaON$wpdb->postmeta.post_id=$wpdb->posts.IDWHEREpost_date<'".current_time('mysql')."'ANDpost_date>'".$limit_date."'AND$whereANDpost_status='publish'ANDmeta_key='views'ANDpost_password=''ORDERBYviewsDESCLIMIT$limit");

if($most_viewed){

foreach($most_viewedas$post){

$post_title=get_the_title();

$post_views=intval($post->views);

$post_views=number_format($post_views);

$temp.="

  • $post_title-$post_views".__('views','wp-postviews')."
  • ";

    }

    }else{

    $temp='

  • '.__('N/A','wp-postviews').'
  • '."/n";

    }

    if($display){

    echo$temp;

    }else{

    return$temp;

    }

    }

    单单的放上以上语句其实还是不行的,虽然很多博客说可以,可能都是认为写博客的都懂语言吧?虽然我也能改,但小子觉得这个对于那些不懂php为何物的新手来说,真的是难上加难啊。

    这里小子为了大家方便就整理了下,为大家分享。

    case'least_viewed':

    get_least_viewed($mode,$limit,$chars);

    break;

    很简单,打开wp-postviews.php文件在###Function:DisplayLeastViewedPage/Post或者其他的函数上面贴上以上函数,再次说明,函数添加位置随意,但是尽量与其他业务函数放到一起,便于分析嘛!之后的操作就是再小工具的选项StatisticsType中添加get_timespan_most_viewed选项,这个直接在wp-postviews.php文件中搜索StatisticsType,你可以看到

    ><?php_e('LeastViewed','wp-postviews');?>

    或者其他选项的内容,复制一行,粘贴到上面或者下面(当然也可以是中间),然后将以上语句中least_viewed或者其他的你复制的语句中的值,修改为get_timespan_most_viewed,这样就完成了后台操作,不过目前选择这个选项后边栏是无显示的,因为输出的地方还要改进,下一步同样是在wp-postviews.php文件中操作,搜索classWP_Widget_PostViews,在functionwidget函数中找到switch语句,其中应该有四个转向,形如

    case'least_viewed':

    get_least_viewed($mode,$limit,$chars);

    break;

    不用想,重新复制一份,粘贴到并列的位置,将least_viewed修改为get_timespan_most_viewed,这样,回到首页刷新下,显示效果应该是一天热门的,因为是函数默认的(原函数是默认30天,小子设置为1天了),这里没有在后台添加选项,有需要可以自己需求修改函数体内数据即可。

    另外,还有一点就是,上面提供的get_timespan_most_viewed函数是旧版本中的函数,不支持目前新版的输出格式化等,这里小子又根据新的变量定义整理了如下函数,需要的可以直接复制替换上面提供的get_timespan_most_viewed函数来使用,函数体如下

    $where="post_type='$mode'";

    }else{

    $where='1=1';

    }

    $most_viewed=$wpdb->get_results("SELECTDISTINCT$wpdb->posts.*,(meta_value+0)ASviewsFROM$wpdb->postsLEFTJOIN$wpdb->postmetaON$wpdb->postmeta.post_id=$wpdb->posts.IDWHEREpost_date<'".current_time('mysql')."'ANDpost_date>'".$limit_date."'AND$whereANDpost_status='publish'ANDmeta_key='views'ANDpost_password=''ORDERBYviewsDESCLIMIT$limit");

    if($most_viewed){

    foreach($most_viewedas$post){

    $post_views=intval($post->views);

    $post_title=get_the_title($post);

    if($chars>0){

    $post_title=snippet_text($post_title,$chars);

    }

    $post_excerpt=views_post_excerpt($post->post_excerpt,$post->post_content,$post->post_password,$chars);

    $temp=stripslashes($views_options['most_viewed_template']);

    $temp=str_replace("%VIEW_COUNT%",number_format_i18n($post_views),$temp);

    $temp=str_replace("%POST_TITLE%",$post_title,$temp);

    $temp=str_replace("%POST_EXCERPT%",$post_excerpt,$temp);

    $temp=str_replace("%POST_CONTENT%",$post->post_content,$temp);

    $temp=str_replace("%POST_URL%",get_permalink($post),$temp);

    $output.=$temp;

    }

    }else{

    $output='

  • '.__('N/A','wp-postviews').'
  • '."/n";

    }

    if($display){

    echo$output;

    }else{

    return$output;

    }

    }

    }

    如函数参数所示,设置天数的地方已经用注释标注了,这里仍然不再提供面板设置的选项了,需要的朋友可以自己折腾,在调试的时候可能因为当日访问量过低,设置1天不能实现预期的显示效果,就设置回30天了,大家可以根据需要设置。

    本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/jianzhan/jingyan/18699.html
    上一篇ecshop用哪个版本最好?老客户有必要升级到最新
    下一篇 WordPress自带TinyMCE编辑器使用技巧大全完整版
    admin

    作者: admin

    这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

    为您推荐

    评论列表()

      联系我们

      联系我们

      0898-88888888

      在线咨询: QQ交谈

      邮箱: email@wangzhan.com

      工作时间:周一至周五,9:00-17:30,节假日休息

      关注微信
      微信扫一扫关注我们

      微信扫一扫关注我们

      关注微博
      返回顶部