主页/WordPress笔记/博客文章/综合文章/如何在 WordPress 中允许用户匿名发表评论

如何在 WordPress 中允许用户匿名发表评论

Bug编译狮

Bug编译狮

要在WordPress中允许用户匿名发表评论,你需要修改functions.php文件中的代码来启用匿名评论功能。以下是具体步骤和示例代码:

步骤 1: 打开 functions.php

首先,找到并打开你的WordPress主题的根目录下的functions.php文件。

步骤 2: 添加匿名评论代码

functions.php文件中添加以下代码:

// Enabling anonymous commenting for your WordPress site.
add_filter('pre_user_comment', 'allow_anonymous_comments');
function allow_anonymous_comments($comment) {
    // Check if the comment is being posted by a user and not an anonymous user.
    if (is_user_logged_in() && !wp_is_user_trusted($comment->user_id)) {
        $comment = array(
            'comment_ID' => $comment->comment_ID,
            'comment_post_ID' => $comment->comment_post_ID,
            'comment_author' => get_current_user_email(),
            'comment_author_url' => '',
            'comment_author_IP' => '',
            'comment_content' => wp_kses($comment->comment_content, wp_kses_allowed_html(5)),
            'comment_date' => $comment->comment_date,
            'comment_date_gmt' => $comment->comment_date_gmt,
            'comment_type' => '',
            'comment_parent' => $comment->comment_parent,
            'user_id' => get_current_user_id()
        );
        return $comment;
    }
}

步骤 3: 验证设置

保存更改后,刷新你的网站主页以查看新功能是否生效。

示例代码解析

  • add_filter('pre_user_comment', 'allow_anonymous_comments');: 这行代码注册了一个过滤器,用于在预处理函数pre_user_comment中运行自定义函数。
  • if (is_user_logged_in() && !wp_is_user_trusted($comment->user_id)) { ... }: 这段代码检查当前登录用户的ID是否被信任,如果不是,则执行匿名评论的逻辑。
  • $comment = array(...);: 如果匿名评论被允许,这个数组会被用来替换原始的评论数据。
  • return $comment;: 返回处理后的评论数据。

注意事项

  • 确保在生产环境中测试这些更改,以避免潜在的安全问题。
  • 在开发过程中,可以先禁用此功能以确保一切正常工作。
  • 安全性建议:不要公开用户邮箱或IP地址,因为这可能会导致垃圾邮件问题。

通过以上步骤,你可以成功地在WordPress中开启匿名评论功能,为用户提供更多的自由度。

黑板前的Bug语法讲师

黑板前的Bug语法讲师

在WordPress中,允许用户匿名发表评论可以通过设置WP_User_Authenticate功能来实现。下面我将详细介绍这个过程。

1. 创建匿名用户

首先,你需要创建一个新用户并将其添加到数据库中。你可以使用以下PHP脚本来创建一个新的匿名用户:

<?php
// 用户信息
$user_name = 'anonymous';
$login = $user_name;
$password = wp_generate_password();
$email = $user_name . '@example.com';

// 新用户表单
if (wp_next_scheduled('wp_create_user') || !wp_is_writable('/tmp/')) {
    die('Sorry, you cannot create a user in this environment.');
}

// 创建新用户
wp_new_user(array(
    'user_login' => $login,
    'user_pass' => $password,
    'display_name' => $user_name,
    'email' => $email,
));

echo "User '$login' created successfully.";
?>

2. 添加匿名权限

然后,你需要为新的匿名用户添加适当的权限以便他们可以发布评论。这通常涉及更改他们的账户类型或身份验证方法。以下是将匿名用户添加到特定角色(如admin)中的例子:

<?php
/**
 * Adds the anonymous user to the 'admin' role.
 */
function add_anonymous_role() {
    global $wpdb;

    // 获取当前用户ID
    $current_user_id = get_current_user_id();

    // 确保当前用户不是匿名用户
    if ($current_user_id != '0') {
        return;
    }

    // 找到当前用户的用户名
    $username = wp_get_current_user()->user_login;

    // 如果当前用户没有加入任何角色,则添加'admin'
    if (!is_admin()) {
        update_user_meta($current_user_id, '_role', 'admin');
    }
}
add_action('init', 'add_anonymous_role');

/**
 * Removes the anonymous user from the 'admin' role.
 */
function remove_anonymous_role() {
    global $wpdb;

    // 获取当前用户ID
    $current_user_id = get_current_user_id();

    // 确保当前用户是匿名用户
    if ($current_user_id == '0') {
        return;
    }

    // 找到当前用户的用户名
    $username = wp_get_current_user()->user_login;

    // 如果当前用户有'admin'角色,则移除它
    if (in_array($username, array('admin'))) {
        update_user_meta($current_user_id, '_role', '');
    }
}
add_action('shutdown', 'remove_anonymous_role');
?>

3. 配置评论审核

为了确保匿名评论的安全性,需要配置评论审核。在WordPress中,可以使用comment_status()函数来显示和管理评论。例如,我们可以在主题文件中修改comment_status.php以只显示未审核的评论:

<?php
// 设置评论状态
define('COMMENT_STATUS_APPROVED', 'approved');
define('COMMENT_STATUS_PENDING', 'pending');
define('COMMENT_STATUS_REJECTED', 'rejected');
define('COMMENT_STATUS_AUTO_APPROVE', 'auto_approve');
define('COMMENT_STATUS_AUTO_REJECT', 'auto_reject');
define('COMMENT_STATUS_DEFAULT', 'default');

// 定义默认评论状态
define('COMMENT_STATUS_DEFAULT', 'default');

// 修改评论状态
function comment_status() {
    switch(get_comment_status()) {
        case COMMENT_STATUS_APPROVED:
            echo '<li class="status-approved"><a href="' . esc_url( get_comment_link( get_comment_ID(), true ) ) . '">' . esc_html( __('Approved', 'wordpress') ) . '</a></li>';
            break;
        case COMMENT_STATUS_PENDING:
            echo '<li class="status-pending"><a href="' . esc_url( get_comment_link( get_comment_ID(), true ) ) . '">' . esc_html( __('Pending Review', 'wordpress') ) . '</a></li>';
            break;
        case COMMENT_STATUS_REJECTED:
            echo '<li class="status-rejected"><a href="' . esc_url( get_comment_link( get_comment_ID(), true ) ) . '">' . esc_html( __('Rejected', 'wordpress') ) . '</a></li>';
            break;
        default:
            echo '<li class="status-default"><a href="' . esc_url( get_comment_link( get_comment_ID(), true ) ) . '">' . esc_html( __('Default', 'wordpress') ) . '</a></li>';
            break;
    }
}

add_action('comment_status', 'comment_status');
?>

结论

通过以上步骤,您可以成功地在WordPress中启用匿名评论功能。请注意,您可能需要根据您的具体需求对这些示例代码进行调整。同时,请确保遵循WordPress的最佳实践,以保证网站的安全性和用户体验。