You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress自定义插件前台显示正常但无法打印修改时间求助

问题分析与解决方案

核心问题

你的插件在the_content过滤器中直接使用echo输出修改时间,而非将内容整合到返回的$content变量中。打印插件(包括Print My Blog)通常会获取经过过滤器处理后的$content值生成打印内容,直接echo的内容会提前输出到页面,不会被包含到打印插件抓取的内容里,因此打印时无法显示。

另外,the_modified_date()函数默认直接输出日期,而非返回字符串,这也会导致输出顺序异常,进一步影响打印抓取。

修改后的代码

将插件代码调整为以下形式,把修改时间的HTML内容整合到文章内容中:

<?php
/**
 * WordPress Plugin: Display Modified Date
 */
function modified_date($content) {
    // 仅处理文章,跳过页面
    if (is_page()) {
        return $content;
    }

    // 使用Unix时间戳比较,避免日期格式差异导致的判断误差
    $orig_timestamp = get_the_time('U');
    $mod_timestamp = get_the_modified_time('U');

    if ($orig_timestamp !== $mod_timestamp) {
        // 构建修改时间的HTML字符串
        $modified_html = sprintf(
            '<div class="mod" style="line-height: 1.2em; position: relative; text-align: right;"><strong>Modified:</strong> %s</div>',
            get_the_modified_date() // 返回日期字符串,而非直接输出
        );
        // 将修改时间追加到文章内容末尾
        $content .= $modified_html;
    }

    return $content;
}
add_filter('the_content', 'modified_date');
?>

关键修改说明

  • 替换echo为字符串拼接:将修改时间的HTML内容追加到$content变量后再返回,确保打印插件能抓取到这部分内容
  • 用时间戳比较日期:get_the_time('U')和get_the_modified_time('U')返回Unix时间戳,比默认日期字符串比较更准确,避免格式差异导致的误判
  • 替换the_modified_date()为get_the_modified_date():前者直接输出内容,后者返回日期字符串,适合在过滤器中进行字符串拼接操作

关于Print My Blog插件的设置

修改代码后,无需调整你当前的Print My Blog配置(Print My Blog > Settings > Print Buttons > 选择Posts,Customize Buttons > 选择Print),修改时间会自动被插件抓取并包含在打印内容中。

内容的提问来源于stack exchange,提问作者Canon Ball

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 09:16:35