wordpress添加“历史上的今天”小工具

  • A+
所属分类:建博笔记

第一部分:文章前言

一、文章前言

为了提高访客粘性,丰富博客内容,博主们通常会针对文章侧重点的不同制定各种模块/小工具,然后通过这些模块/小工具来调用博客文章并展示到前台页面,比如:

  • 最新文章模块/小工具:侧重点是文章发布的时间
  • 热评文章模块/小工具:侧重点是文章评论的数量
  • 相关文章模块/小工具:侧重点是当前文章的分类
  • ...

今天介绍的“历史上的今天”其侧重点是“今天”。

 

第二部分:效果预览 功能解读

二、效果预览

侧边栏小工具中的应用效果

正文中的应用效果

 

三、功能解读

“历史上的今天”中的“今天”可以有两种不同的解读:

  • 第一种:针对文章发布日期 ? 以下简称:第一种今天

比如这篇文章的发布日期是2019年6月14日,那么“历史上的今天”中的文章显示的应该是每年6月14日发布的文章。

  • 第二种:针对现实中的今天 ? 以下简称:第二种今天

比如今天是2019年6月10日,那么“历史上的今天”中的文章显示的应该是每年6月10日发布的那些文章。

由于解读的不同,会使“历史上的今天”中出现的文章不同,因此涉及到的代码也会略有不同,需要分别编写。同时,在使用上也会有些不同,这个在后面会详细讲到。

 

第三部分:功能代码 使用方法

四、功能代码

  • “第一种今天”完整代码
<!-- 历史上的今天,针对文章发布日期 -->
<?php
function wp_today(){
    global $wpdb;
    $post_year = get_the_time('Y');
    $post_month = get_the_time('m');
    $post_day = get_the_time('j');
    $sql = "select ID, year(post_date_gmt) as h_year, post_title, comment_count FROM $wpdb->posts WHERE post_password = '' AND  post_type = 'post' AND post_status = 'publish' AND year(post_date_gmt)!='$post_year' AND month(post_date_gmt)='$post_month' AND day(post_date_gmt)='$post_day' order by post_date_gmt DESC limit 5";
    $histtory_post = $wpdb->get_results($sql);
    if( $histtory_post ){
        foreach( $histtory_post as $post ){
            $h_year = $post->h_year;
            $h_post_title = $post->post_title;
            $h_permalink = get_permalink( $post->ID );
            $h_comments = $post->comment_count;
            $h_post .= "<li><strong>$h_year:</strong>&nbsp;&nbsp;<a href='".$h_permalink."'title='".$h_post_title."' target='_blank'>$h_post_title($h_comments)</a></li>";
        }
    }
    if ( $h_post ){
        $result = "<ul>".$h_post."</ul>";
    }
    return $result;
}
echo wp_today();
?>
  • “第二种今天”代码

只需将上面代码中的

    $post_year = get_the_time('Y');
    $post_month = get_the_time('m');
    $post_day = get_the_time('j');

替换为

    $post_year = date('Y');
    $post_month = date('m');
    $post_day = date('j');

即可,其他不变。

 

五、使用方法

该功能可根据个人需要应用于侧边栏小工具或正文中。

  • 侧边栏小工具中的使用方法

选择一种“今天”,把相关代码复制到增强文本小工具中即可。如果你的增强文本小工具不支持运行PHP代码的话,请参考文章《分享几个增强文本小工具实例》的前面部分。

  • 正文中的使用方法

选择一种“今天”,并在代码的下面添加

function wp_today_auto($content){
    if( is_single() ){
        $content = $content.wp_today();
    }
    return $content;
}
add_filter('the_content', 'wp_today_auto',9999);

即可。默认情况下,该功能显示在文章底部。如果要放在文章顶部,将代码中的

$content = $content.wp_today();

修改为

$content = wp_today().$content;

即可。

 

第四部分:可能存在的问题 解决思路

六、可能存在的问题

当你博客里的历史文章积累不多的时候,会造成以下几种结果:

第一种:匹配到的文章数量过少,造成前台展示效果不美观,参考这里

第二种:匹配不到文章,造成前台只显示小工具标题(假如你设置了小工具标题的话),参考这里

第三种:匹配不到文章也没有设置小工具标题时,只显示一个空白块,参考这里

 

七、解决思路

对于前两种结果,没有解决办法,建议你暂时不使用这个功能。对于第三种结果,有两种解决思路:

第一种解决思路:勾选【增强文本小工具】中的【不显示空的小工具】选项,参考这里 。启用这个选项后,就可以避免显示空白块的问题,同时又不影响在其他文章页匹配到历史文章时的正常显示。

第二种解决思路:将该功能应用于正文中(而不是侧边栏小工具)。因为应用于正文中时,如果没有匹配到历史文章的话是不会显示该功能的。

 

以上就是本文的全部内容。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar Action 3

      文章排版很用心,内容也很详细实用。这个功能挺多博主使用的,今天终于知道怎么实现了。