WordPress开发:如何在single.php中添加用户未评论文章的条件判断代码
这个链接的内容完全能帮你解决问题!
嘿,不用纠结那个链接啦,我把里面的核心逻辑拆解成你能直接用的内容——它的思路正好匹配你的需求:判断「非文章作者的当前用户是否未对文章发表过评论」,然后执行指定操作。
具体实现步骤(大白话版)
- 先拿到当前登录用户的ID、当前文章的ID,还有文章作者的ID
- 确认用户是登录状态(如果没登录,自然没评论过,你可以按需调整这个判断)
- 先排除文章作者,再检查这个用户有没有给当前文章留过评论
- 满足「非作者+未评论」的条件时,就执行你要的操作
直接可用的代码片段
把这段代码放到single.php里你需要触发操作的位置就行:
// 获取当前登录用户的ID $current_user = wp_get_current_user(); $current_user_id = $current_user->ID; // 获取当前文章的ID和作者ID $post_id = get_the_ID(); $post_author_id = get_post_field('post_author', $post_id); // 核心条件判断:用户已登录 + 不是文章作者 + 没发表过评论 if (is_user_logged_in() && $current_user_id != $post_author_id) { // 查询该用户在当前文章下的评论数量 $user_comment_count = get_comments(array( 'user_id' => $current_user_id, 'post_id' => $post_id, 'count' => true, // 只返回数字,不用遍历评论列表 'status' => 'approve' // 只统计已通过的评论,要包含待审核的就改成'hold' )); // 没评论过就执行你的操作 if ($user_comment_count == 0) { // do something 这里替换成你要执行的代码 // 举个例子:显示提示语 echo '<p>快来分享你的看法吧!</p>'; } }
简单解释下代码
wp_get_current_user():获取当前登录用户的信息get_the_ID():拿到当前打开的文章IDget_post_field('post_author', $post_id):获取这篇文章作者的ID,用来排除作者本身get_comments():专门查指定用户在指定文章下的评论数量,用count: true直接得到数字,省得绕弯子- 最后
$user_comment_count == 0就是确认用户没留过评论的判断条件
这个逻辑和你提到的讨论里的思路完全一致,放心用就行~
内容的提问来源于stack exchange,提问作者Pete
相关产品推荐
相关产品推荐

