wordpress子比主题增加私密评论

子比主题增加私密评论功能,无需使用JS或修改主题文件,演示效果完美符合代码写法,同时引用子比主题自带的U样式。
以前看别人发过私密评论,又是5又是各种修改文件,觉得很麻烦,后面初一写了一个不黑要is也不需要修改主题文件的版本,很久以前就写了,现在抄给大家吧

wordpress子比主题增加私密评论 wordpress子比主题增加私密评论

完美符合子比主题代码写法,同时引用了子比主题自带的UI样式

代码放在子比主题目录下的func.php即可,如果没有这个文件则创建一个,第一行必须是<?php

不建议放functions.php主题更新会导致代码丢失

 

// 私密评论显示逻辑
function zib_private_message_hook($comment_content, $comment) {
    $comment_ID = $comment->comment_ID;
    $is_private = get_comment_meta($comment_ID, '_private', true);
    $email = $comment->comment_author_email;
    $current_user = wp_get_current_user();
    
    // HTML for private comment notification
    $html = '<div class="hidden-box" reply-show="true" reload-hash="#hidden-box-comment"><a class="hidden-text"><i class="fa fa-exclamation-circle mr10"></i>此评论为私密评论,仅双方可见.</a></div>';

    if ($is_private) {
        // 安全判断:优先使用 user_id 比对
        $is_comment_author = false;
        $is_post_author = false;
        $is_admin = current_user_can('manage_options');

        if ($current_user && $current_user->ID) {
            $is_comment_author = ($current_user->ID == $comment->user_id);
            $is_post_author = ($current_user->ID == get_post_field('post_author', $comment->comment_post_ID));
        }

        // 仅允许:管理员 / 评论作者 / 文章作者 查看私密评论内容
        if ($is_admin || $is_comment_author || $is_post_author) {
            return '<div class="hidden-box show" id="hidden-box-comment"><div class="hidden-text">私密评论内容</div>' . $comment_content . '</div>';
        }

        return $html;
    }

    return $comment_content;
}
add_filter('get_comment_text', 'zib_private_message_hook', 10, 2);

// 添加私密按钮到评论操作列表
function zib_comments_action_add_private($lists, $comment) {
    $current_user = wp_get_current_user();
    $user_id = get_current_user_id();

    // 仅允许管理员或评论作者看到“设为私密”选项
    if (is_user_logged_in() && (is_super_admin($user_id) || $current_user->ID == $comment->user_id)) {

        $comment_ID = $comment->comment_ID;
        $is_private = get_comment_meta($comment_ID, '_private', true);
        $private_text = empty($is_private) ? '设为私密' : '取消私密';
        $action = empty($is_private) ? 'set_private' : 'del_private';
        $private_but = '<a class="comment-private-link wp-ajax-submit" form-action="' . esc_attr($action) . '" form-data="' . esc_attr(json_encode(['id' => $comment_ID])) . '" href="javascript:;"><i class="fa fa-user-secret mr10" aria-hidden="true"></i>' . $private_text . '</a>';

        $lists = '<li>' . $private_but . '</li>' . $lists;
    }

    return $lists;
}
add_filter('comments_action_lists', 'zib_comments_action_add_private', 99, 2);

// 处理更新评论私密状态的 AJAX 请求
function zib_private_comment_action() {
    $response = ['reload' => true];

    if (!isset($_POST['action']) || !$_POST['action']) {
        zib_send_json_error(['msg' => '无效的操作类型'] + $response);
    }

    if (!isset($_POST['id']) || !$_POST['id']) {
        zib_send_json_error(['msg' => '无效的评论ID'] + $response);
    }

    $comment_id = intval($_POST['id']);
    $action = sanitize_text_field($_POST['action']);
    $comment = get_comment($comment_id);
    $post_author_id = get_post_field('post_author', $comment->comment_post_ID);

    $current_user = wp_get_current_user();

    // 用 user_id 判断评论作者
    if (!$comment_id || !$current_user || !($current_user->ID == $comment->user_id || current_user_can('manage_options'))) {
        zib_send_json_error(['msg' => '权限不足或无效的评论ID'] + $response);
    }

    if ($action === 'set_private') {
        update_comment_meta($comment_id, '_private', 'true');
        zib_send_json_success(['msg' => '评论已设为私密'] + $response);
    } elseif ($action === 'del_private') {
        delete_comment_meta($comment_id, '_private');
        zib_send_json_success(['msg' => '评论已公开'] + $response);
    } else {
        zib_send_json_error(['msg' => '无效的操作类型'] + $response);
    }
}
add_action('wp_ajax_set_private', 'zib_private_comment_action');
add_action('wp_ajax_del_private', 'zib_private_comment_action');
温馨提示:本站提供的一切软件、教程和内容信息都来自网络收集整理,仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,版权争议与本站无关。用户必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解! 联系邮箱:lgg.sinyi@qq.com

给TA打赏
共{{data.count}}人
人已打赏
CMS教程

子比主题 – 侧边栏动态时间小工具

2025-9-4 20:33:55

CMS教程

wordpress子比主题修改带页面快照GO跳转页面

2025-9-10 10:44:58

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索