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
相关产品推荐
相关产品推荐

