让代码更简单

WordPress添加文章过时失效提示

重要:本文最后更新于2019-11-30 13:47:09,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

不知不觉已经使用WP建站3年多了,最近两年基本保持每天一篇文章的频率更新,但部分文章具有时效性,比如活动,比如某些工具等。这类文章不仅无法帮助找到这篇文章的人,反而会误导他们,白白浪费时间与精力。前段时间帮某缙写了这段代码,于是拿来套用之。

实现原理

输出WordPress数据库中存储的文章最后更新时间字段,并与访问者访问时间对比,如果访问时间大于最后更新时间+一天,则输出文章失效提示,反之则不输出。这里的1天可以自行定义。为了方便大家使用,我这里提供了两种方式,自行选择。

钩子函数挂载

利用WordPress提供的the_content()钩子挂载。当然,这样会导致所有页面中及摘要中都会出现提示。不建议使用此方法

functions.php文件中加入如下代码

复制
//文章过期提示
function article_time_update($content) {
    date_default_timezone_set('PRC');
    $newdate=time();
    $updated_date = get_the_modified_time('Y-m-d H:i:s');
    $updatetime=strtotime($updated_date);
    $custom_content = '';
    if ( $newdate > $updatetime+86400) {
    $custom_content= '<div class="article-timeout"><strong>重要:</strong>本文最后更新于<code>'. $updated_date . '</code>,某些文章具有时效性,若有错误或已失效,请在下方<a href="#comment">留言</a>或联系<a target="_blank" title="代码狗博客" href="https://www.daimadog.org/about"><b>代码狗</b></a>。</div >';
    }
        echo $custom_content.$content;
    }
add_action('the_content','article_time_update');

不建议使用此方法,因为部分主题可能会在摘要部分显示提示信息!

直接调用函数

如果你只需要文章提示,那么可以直接修改下你的文章模板single.php,在the_content()函数之前调用下如下函数。

先将下面的函数代码加入到你的functions.php文件中。

复制
//文章过期提示
function article_time_update() {
    date_default_timezone_set('PRC');
    $newdate=time();
    $updated_date = get_the_modified_time('Y-m-d H:i:s');
    $updatetime=strtotime($updated_date);
    $custom_content = '';
    if ( $newdate > $updatetime+86400) {
    $custom_content= '<div class="article-timeout"><strong>重要:</strong>本文最后更新于<code>'. $updated_date . '</code>,某些文章具有时效性,若有错误或已失效,请在下方<a href="#comment">留言</a>或联系<a target="_blank" title="代码狗博客" href="https://www.daimadog.org/about"><b>代码狗</b></a>。</div >';
    }
        echo $custom_content;
    }

single.php文件中找到the_content()函数,并在其之前加上article_time_update()即可。

具体效果如本站文章页面,下面是我的css

复制
.article-timeout {
  position: relative;
  color: #999;
  margin-bottom: 25px;
  padding: 15px;
  background-color: #fbfbfb;
  border-top: 1px solid #f0f0f0;
  border-bottom: 1px solid #f0f0f0;
}

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (6)

登录后评论
狗哥,再加一个已超过 "多少天多少天" 没有更新改怎么加呢。。
我把你代码和另一个代码结合了一下。。能跑起来,但好像时间不是很对。。
function article_time_update() {
date_default_timezone_set('PRC');
$newdate=time();
$updated_date = get_the_modified_time('Y-m-d H:i:s');
$updatetime=strtotime($updated_date);
$getunix = get_post_modified_time('U');
$bj_date = 8*60*60; //时差
$days_old_sum = ((time() - $getunix + $bj_date));
$days_old = (($days_old_sum/86400));
$daynum = floor($days_old);
$custom_content = '';
if ( $newdate > $updatetime+86400) {
$custom_content= '.old-message {background: #e2edfa;color: #414c59;border: 6px dashed #e2edfa;border-radius: var(--border-hd);padding: 2px;line-height: 1.8;font-size: 15px;text-align: center;}本文最后更新于 '.get_post_modified_time('Y年n月j日').',已超过 '.$daynum.'天 没有更新';
}
echo $custom_content;
}
这种计算方式是不正确的。
又学到一招,宝藏博客,长期来逛
看起来很不错~到时候试试看添加一下~~多谢分享
我就去试试有没有这么牛逼,有的话我给你留个外链,帮你引个流。
学习了!
QQ咨询 邮件咨询 狗哥推荐