- 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> <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;
即可。
第四部分:可能存在的问题 解决思路
六、可能存在的问题
当你博客里的历史文章积累不多的时候,会造成以下几种结果:
第一种:匹配到的文章数量过少,造成前台展示效果不美观,参考这里
第二种:匹配不到文章,造成前台只显示小工具标题(假如你设置了小工具标题的话),参考这里
第三种:匹配不到文章也没有设置小工具标题时,只显示一个空白块,参考这里
七、解决思路
对于前两种结果,没有解决办法,建议你暂时不使用这个功能。对于第三种结果,有两种解决思路:
第一种解决思路:勾选【增强文本小工具】中的【不显示空的小工具】选项,参考这里 。启用这个选项后,就可以避免显示空白块的问题,同时又不影响在其他文章页匹配到历史文章时的正常显示。
第二种解决思路:将该功能应用于正文中(而不是侧边栏小工具)。因为应用于正文中时,如果没有匹配到历史文章的话是不会显示该功能的。
以上就是本文的全部内容。
2019年5月30日 13:01 沙发
文章排版很用心,内容也很详细实用。这个功能挺多博主使用的,今天终于知道怎么实现了。