主页/WordPress笔记/博客文章/综合文章/如何从 WordPress 评论中删除日期和时间

如何从 WordPress 评论中删除日期和时间

Bug编译狮

Bug编译狮

要从 WordPress 评论中删除日期和时间,可以通过修改 wp-includes/comment-template.php 文件来实现。这个文件位于 WordPress 根目录下的 wp-content/themes/your-theme-name 目录下(如果未自定义主题)。以下是一些关键步骤和代码示例:

步骤1:备份原始文件

在开始修改之前,请确保备份原始的 comment-template.php 文件。

cp wp-content/plugins/wordpress-seo/inc/templates/comments.php comment-template.php.bak

步骤2:编辑 comment-template.php

打开并编辑 comment-template.php 文件,找到相关的代码块,通常是这样的:

<div class="entry-meta">
    <?php echo get_comment_date(); ?>
    <span><?php esc_html_e( 'by', 'textdomain' ); ?> </span>
    <?php echo get_comment_author_link(); ?>
</div>

这里的 get_comment_date() 函数会输出评论日期和时间。

步骤3:替换为无日期的时间戳

我们将通过重定向函数 set_time_limit(0) 来禁用时区转换,并通过 current_time('mysql') 获取当前服务器时间。然后,我们可以在 HTML 中显示这些信息。

<?php
$timestamp = current_time('mysql');
echo '<time datetime="' . $timestamp . '">' . date_i18n(get_option('date_format'), $timestamp) . '</time>';
?>
<span><?php esc_html_e( 'by', 'textdomain' ); ?></span>
<?php echo get_comment_author_link(); ?>

步骤4:保存并测试

保存更改后,上传到服务器重新部署主题或插件,以应用新的样式和功能。

效果说明

  • 代码解析

    • set_time_limit(0); 禁用了 PHP 的时区限制,使时区信息无效。
    • current_time('mysql') 返回的是服务器当前时间,格式化后显示为标准的 HTML 时间标签。
  • 示例代码

    <?php
    $timestamp = current_time('mysql');
    echo '<time datetime="' . $timestamp . '">' . date_i18n(get_option('date_format'), $timestamp) . '</time>';
    ?>
    <span><?php esc_html_e( 'by', 'textdomain' ); ?></span>
    <?php echo get_comment_author_link(); ?>
  • 效果: 删除了原本的日期和时间显示,仅保留了服务器当前时间作为评论发布时间。

请注意,这种方法适用于大多数情况,但可能不适用于所有复杂场景,特别是那些依赖于特定时区处理的应用程序。在生产环境中,建议对新代码进行彻底的单元测试和性能评估,确保其与现有系统兼容。

黑板前的Bug语法讲师

黑板前的Bug语法讲师

要从WordPress评论中删除日期和时间,可以使用以下方法:

方法1:通过PHP自定义插件

步骤1:创建一个自定义插件

  1. 安装WordPress插件

    • 打开WordPress管理界面。
    • 在顶部菜单栏中选择“插件” > “添加新插件”。
  2. 搜索wp-comment-form.php

  3. 下载并激活插件:点击“激活”按钮。

  4. 编辑插件文件

    • 找到或创建一个新的名为functions.php的文件(如果有的话)。
    • 将下面的内容复制并粘贴到该文件中:
add_filter( 'comment_text', 'remove_date_time_from_comment', 10, 2 );
function remove_date_time_from_comment( $text, $comment ) {
    if ( ! empty( $comment->comment_date ) && ! empty( $comment->comment_author_email ) ) {
        $text = str_replace(
            sprintf('%s %s', esc_html__( 'by ', 'your-theme' ), esc_html__( 'on ', 'your-theme' )),
            '',
            $text
        );
    }
    return $text;
}
  1. 测试插件

    • 使用WordPress内置的浏览器开发者工具来检查修改后的输出是否正确。
  2. 发布并启用插件

    • 在WordPress管理界面中找到并激活这个插件。

方法2:通过JavaScript自定义功能

步骤1:编写JavaScript代码

  1. 创建一个.js文件

    • 打开WordPress管理界面。
    • 在顶部菜单栏中选择“插件” > “新建文件”。
    • 导航至“JavaScript”类别下的“jQuery库”标签页。
  2. 将代码添加到.js文件中

    • 复制并粘贴以下代码到.js文件中:
// 获取评论文本
var commentText = document.querySelector('.comment-text').innerText;

// 去除日期与时间
commentText = commentText.replace(/(d{4})-(d{2})-(d{2}) (d{2}):(d{2}):(d{2}) /g, '');

// 显示新的评论文本
document.querySelector('.comment-text').innerText = commentText;
  1. 测试代码

    • 使用WordPress内置的浏览器开发者工具来检查修改后的输出是否正确。
  2. 保存并发布插件

    • 保存更改后,点击“保存并发布”以发布插件。

注意事项

  • 如果用户需要在其他地方查看评论中的日期和时间,请考虑为这些部分提供额外的HTML结构,例如使用<time>元素。
  • 这些方法仅适用于单个评论;对于大量评论,可能需要考虑更复杂的方法来处理整个评论列表。

示例代码

  • PHP自定义插件:

    <?php
    add_action('init', 'custom_comments');
    function custom_comments() {
      // 自定义插件代码在此处
    }
  • JavaScript自定义功能:

    var dateRegex = /(d{4})-(d{2})-(d{2}) (d{2}):(d{2}):(d{2})/;
    var commentText = document.querySelector('.comment-text').innerText;
    
    while(commentText.match(dateRegex)) {
      commentText = commentText.replace(dateRegex, '');
    }
    
    document.querySelector('.comment-text').innerText = commentText;

这两个例子展示了如何从WordPress评论中移除日期和时间,以及如何使用JavaScript来实现这一目标。希望这对您有所帮助!