教程转自:星空知-子比评论区设置私密评论
迭代版本:
- 2024.09.25:第一版
- 2024.09.26:第二版
- 2024.10.01:第三版
- 2024.10.02:第四版
魔改改进:
- 复选框和文字间增加一段距离
- 设置私密等与原主题保持一致
- 设置复选框与主题保持一致
- 将设置私密按钮移动到下拉工具栏中
- 优化设置私密评论逻辑
代码修改:
functions.php代码
//私密评论
function yxc_scripts(){
if (!is_admin()) {
$script = array(
'smminjs' => 'https://cdn.catchyxc.com/wp-resource/js/private-comments.js',
);
foreach( $script as $k => $v ){
wp_register_script( $k, $v, array(), '2.4.0', true);
};
wp_enqueue_script('smminjs');
if (is_singular()) {
wp_enqueue_script('smminjs');
};
}
}
add_action('wp_enqueue_scripts', 'yxc_scripts');
function yxc_private_message_hook( $comment_content , $comment ){
$comment_ID = $comment->comment_ID;
$parent_ID = $comment->comment_parent ? $comment->comment_parent : '';
$parent_email = get_comment_author_email($parent_ID);
$is_private = get_comment_meta($comment_ID, '_private', true);
$email = $comment->comment_author_email;
$current_commenter = wp_get_current_commenter();
$current_user = wp_get_current_user();
$html = '<span style="color:#558E53"><i class="fa fa-lock fa-fw"></i>该评论为私密评论</span>';
if ($is_private) {
// 普通用户未登录,且没有输入评论名
if (!is_user_logged_in() && $current_commenter['comment_author_email'] == '') {
return $comment_content = $html;
}
// 检查当前用户是否是评论的作者、原评论的作者或管理员
if ($current_user->user_email == $email ||
$current_user->user_email == $parent_email ||
current_user_can('delete_user')) {
return '【私密评论】 ' . $comment_content;
}
return $comment_content = $html;
}
return $comment_content;
}
add_filter('get_comment_text','yxc_private_message_hook',10,2);
function yxc_mark_private_message( $comment_id ){
if ( $_POST['is-private'] ) {
update_comment_meta($comment_id,'_private','true');
}
}
add_action('comment_post', 'yxc_mark_private_message');
//将某条评论设为私密评论
add_action('wp_ajax_nopriv_mrhe_private', 'yxc_private');
add_action('wp_ajax_mrhe_private', 'yxc_private');
function yxc_private(){
$comment_id = $_POST["p_id"];
$action = $_POST["p_action"];
if ( $action == 'set_private'){
update_comment_meta($comment_id, '_private', 'true');
}
if ($action == 'del_private'){
delete_comment_meta($comment_id, '_private','true');
}
echo '<i class="fa fa-check mr10 fa-fw" aria-hidden="true"></i>设置成功';
die;
}
// //挂载到评论底部
// function yxc_footer_info_add_private($info, $comment) {
// if ( current_user_can( 'manage_options' ) ) {
// $comment_ID = $comment->comment_ID;
// $i_private = get_comment_meta($comment_ID, '_private', true);
// $flag = ''; // 初始化 $flag 为空字符串
// if (empty($i_private)) {
// $flag .= ' <a href="javascript:;" rel="external nofollow" rel="external nofollow" data-actionp="set_private" data-idp="' . get_comment_id() . '" id="sp" class="sm"><span class="has_set_private">设为私密</span></a>';
// $info = $info . $flag;
// } else {
// $flag .= ' <a href="javascript:;" rel="external nofollow" rel="external nofollow" data-actionp="del_private" data-idp="' . get_comment_id() . '" id="sp" class="sm"><span class="has_set_private">删除私密</span></a>';
// $info = $info . $flag;
// }
// }
// return $info;
// }
// add_filter('comment_footer_info', 'yxc_footer_info_add_private', 99, 2);
js代码
$(function() {
$(".links-card ul.list-inline img").each(function() {
if ("" == $(this).attr("data-src")) {
var a = "" + $(this).parent().attr("href");
$(this).attr("src", a)
}
}), $(document).on("click", ".sm", function() {
var a = $(this);
if (a.hasClass("private_now")) return notyf("您之前已设置过私密评论", "warning"), !1;
a.addClass("private_now");
var t = a.data("idp"),
e = a.data("actionp"),
n = a.children(".has_set_private"),
r = {
action: "mrhe_private",
p_id: t,
p_action: e
};
return $.post("/wp-admin/admin-ajax.php", r, function(a) {
n.html(a)
}), !1
})
});
/wp-content/themes/zibll/template/comments.php代码
<!--私密评论-->
<label class="but c-blue pw-1em" data-placement="top" data-toggle="tooltip" title="你的评论仅评论双方可见。" style="margin-bottom: 0px; -moz-user-select: none; -ms-user-select: none; user-select: none; margin-right: 6px;">
<input id="is-private-checkbox" name="is-private" type="checkbox" style= "margin: 1px 4px 1px 0; width: 12px; height: 12px; min-width: 0em;">私密</label>
/wp-content/themes/zibll/inc/functions/zib-comments-list.php代码
$i_private = get_comment_meta($comment->comment_ID, '_private', true);
if (current_user_can('manage_options')) {
if (empty($i_private)) {
$private_but = '<a href="javascript:;" rel="external nofollow" data-actionp="set_private" data-idp="' . $comment->comment_ID . '" class="sm"><span class="has_set_private"><i class="fa fa-lock mr10 fa-fw" aria-hidden="true"></i>设为私密</span></a>';
} else {
$private_but = '<a href="javascript:;" rel="external nofollow" data-actionp="del_private" data-idp="' . $comment->comment_ID . '" class="sm"><span class="has_set_private"><i class="fa fa-unlock mr10 fa-fw" aria-hidden="true"></i>设为公开</span></a>';
}
$lists .= '<li>' . $private_but . '</li>';
}
CSS代码
在后台主题设置[自定义CSS样式]添加下面CSS代码:
/*设置私密复选框样式*/
#is-private-checkbox::before {
transition: transform 0.2s ease;
}
#is-private-checkbox:checked::before {
transform: translateY(-50%) translateX(-5%) scale(0.5);
}
#is-private-checkbox:not(:checked)::before {
transform: translateY(0) translateX(0) scale(1);
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容