给WordPress文章添加一个过时提醒#2

有些教程和方法由于“年久失修”可能会失效。我们一两年前撰写的文章,可能在现在已经不再适用。因此,我想为这些可能失效的旧文章添加一个“可能已失效”的小提示,以此对读者负责。

添加代码

将以下代码添加到您主题目录中的 function.php 文件。在文件中可以选择多种插入位置:

位置一:文章顶部

// 添加老文章提示信息,位于顶部
function old_content_message($content)
{
    $modified = get_the_modified_time('U');
    $current = current_time('timestamp');
    $diffTime = ($current - $modified) / (60 * 60 * 24);
    if ($diffTime > 365) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 1 年未更新!内容可能已失效,请自行测试。如有失效,请在评论区反馈,谢谢!</div>' . $content;
    }
    return $content;
}
add_filter('the_content', 'old_content_message');

位置二:文章底部

// 添加老文章提示信息,位于底部
function old_content_message($content)
{
    $modified = get_the_modified_time('U');
    $current = current_time('timestamp');
    $diffTime = ($current - $modified) / (60 * 60 * 24);
    if ($diffTime > 365) {
        $content = $content . '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 1 年未更新!内容可能已失效,请自行测试。如有失效,请在评论区反馈,谢谢!</div>';
    }
    return $content;
}
add_filter('the_content', 'old_content_message');

指定文章分类显示

有时我们只希望在部分文章分类下显示提示信息,或者排除某些分类的文章。您只需在第六行代码中添加判断条件,如下所示:

if($diffTime > 365 && in_category(3)) {

需要让多个分类显示提示信息(如ID为 8、9、10 的分类),请将第六行修改为:

if($diffTime > 365 && in_category(array(3, 2, 1))) {

要排除某些分类,只需在 in_category 前加上半角“!”(英文感叹号),例如:

if($diffTime > 365 && !in_category(array(8, 9, 10))) {

另外,如果您想修改时间的阈值,可以调整第六行。第五行的 60 * 60 * 24 是将秒数转换为天数,而 > 365 则表示最后修改时间超过一年的文章将会出现提示。您可以根据需要调整这些值。例如,如果您希望每个月更新提醒,则可以将提示改为“已超过 1 个月未更新”、“已超过 2 个月未更新”,依此类推。对应的代码如下:

每个月更新提醒

// 每个月提醒文章过时提示信息
function old_content_message($content)
{
    $modified = get_the_modified_time('U');
    $current = current_time('timestamp');
    $diffTime = ($current - $modified) / (60 * 60 * 24);
    if ($diffTime > 30 && $diffTime <= 60) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 1 个月未更新!</div>' . $content;
    } elseif ($diffTime > 60 && $diffTime <= 90) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 2 个月未更新!</div>' . $content;
    } elseif ($diffTime > 90 && $diffTime <= 120) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 3 个月未更新!</div>' . $content;
    } elseif ($diffTime > 120 && $diffTime <= 150) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 4 个月未更新!</div>' . $content;
    } elseif ($diffTime > 150 && $diffTime <= 181) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 5 个月未更新!</div>' . $content;
    } elseif ($diffTime > 181 && $diffTime <= 212) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 6 个月未更新!</div>' . $content;
    } elseif ($diffTime > 212 && $diffTime <= 243) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 7 个月未更新!</div>' . $content;
    } elseif ($diffTime > 243 && $diffTime <= 274) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 8 个月未更新!</div>' . $content;
    } elseif ($diffTime > 274 && $diffTime <= 305) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 9 个月未更新!</div>' . $content;
    } elseif ($diffTime > 305 && $diffTime <= 335) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 10 个月未更新!</div>' . $content;
    } elseif ($diffTime > 335 && $diffTime <= 365) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 11 个月未更新!</div>' . $content;
    } elseif ($diffTime > 365) {
        $content = '<div class="warn">本文最后更新于' . get_the_modified_time('Y年n月j日') .
            ',已超过 1 年未更新!内容可能已失效,请自行测试。如有失效,请在评论区反馈,谢谢!</div>' . $content;
    }
    return $content;
}
add_filter('the_content', 'old_content_message');

修改 CSS 样式

虽然“长期未更新”的提示已添加,但样式仍与正文段落一致。为此,我设计了一个提示样式。

样式展示

代码如下

/* 文章长期未更新警告 */
.warn {
    background: #ff953f;
    background: -webkit-gradient(linear, left top, right top, from(#ff953f), to(#ffb449));
    background: -webkit-linear-gradient(left, #ff953f, #ffb449);
    background: linear-gradient(90deg, #ff953f, #ffb449);
    text-shadow: 0 -1px #ff953f;
    -webkit-box-shadow: 0 3px 5px rgba(255, 154, 73, .5);
    box-shadow: 0 3px 5px rgba(255, 154, 73, .5);
    display: inline-block;
    color: #fff;
    font-size: 16px;
    padding: 15px;
    border-radius: 50px;
}

.warn:before {
    content: "? ";
}

将此样式添加到主题设置中的 自定义 CSS 样式 中即可。我不建议直接修改源码中的 CSS 样式,因为涉及缓存时可能会造成刷新后仍不显示的麻烦。

评论区
头像
    头像
    到底文不文SAMA
      

    你好,这个in_category()里的数字意义是什么

    头像
    Hrlni-hrlni.cn
      

    这个居中显示,怎么写哇

      头像
      蘑菇
        
      @Hrlni-hrlni.cn

      用<center>标签,或者改CSS,有很多方法可以居中

        头像
        某猫
          
        @蘑菇

        (●ˇ∀ˇ●)
        PS: 最好用css,不然你会出现“人机分离”