WordPress评论自动回复功能求助:书店评论致谢开发遇阻
修复WordPress评论自动致谢功能的问题
你的代码存在几个关键问题导致功能失效,以下是具体修正方案:
核心问题分析
add_action参数不匹配:comment_post钩子默认传递2个参数,但你的函数声明了3个,且未在add_action中指定参数数量为3,导致$commentdata无法正确获取comment_parent赋值错误:你传入的是字符串'$comm',实际需要传入父评论的ID,即$comment_ID或$comm->comment_IDcomment_post_ID写死固定值:所有回复都会发布到ID为2978的文章,应该动态获取当前评论所属的文章ID- 评论内容固定用户名:硬编码"Andy"无法适配不同评论者,应动态获取评论者名称
- 可选:未启用审核判断,若需仅回复已审核评论,应取消相关注释
修正后的代码
add_action( 'comment_post', 'author_new_comment', 10, 3 ); // 指定传递3个参数 function author_new_comment( $comment_ID, $comment_approved, $commentdata ){ // 仅回复已审核的评论,不需要可注释此行 if( $comment_approved == 0 ) return; $comm = get_comment( $comment_ID ); // 防止自动回复触发循环,避免回复自己的评论 if ( $comm->comment_author === 'Admin' ) { return; } $reply_data = [ 'comment_post_ID' => $comm->comment_post_ID, // 动态获取当前评论所属文章ID 'comment_author' => 'Admin', 'comment_author_email' => 'admin@example.com', 'comment_author_url' => 'http://example.com', 'comment_content' => sprintf( '%s, thanks for your review of my book', $comm->comment_author ), // 动态替换评论者名称 'comment_type' => 'comment', 'comment_parent' => $comment_ID, // 直接使用父评论ID 'user_ID' => 1, // 替换为你的实际管理员ID,默认管理员ID为1 ]; wp_new_comment( $reply_data ); }
额外说明
- 添加了循环防护判断:避免自动回复被再次触发,造成无限循环
- 动态获取评论者名称和文章ID,适配全站所有文章的评论
- 请将
admin@example.com、http://example.com和user_ID的值替换为你的实际信息
内容的提问来源于stack exchange,提问作者Andrey Miller
相关产品推荐
相关产品推荐

