如何通过访问评论元数据的钩子更改 WordPress 评论输出?

How to change WordPress Comment output via hooks accessing comment meta data?

我希望将一些元数据添加到我的 Woo Commerce 产品评论中。

我的插件显示客户正在评论哪个产品变体,我想将该信息添加到每个客户的评论(评论)中,并带有一个小缩略图 img产品变体也有点花哨。

但我找不到要使用的过滤器/挂钩。

这个我试过了...

add_filter( 'comment_text', function( string $comment_text ) {

    $comment_text = '<p>Comment text injection</p>' . $comment_text;

    return $comment_text;
});

它有效,但问题是,它没有提供太多上下文...我需要评论 ID,以便获取有关评论的一些元数据。

文档说这个过滤器可以有一个 WP_Comment obj 与过滤器一起传递...但在我的情况下不会发生这种情况。

https://developer.wordpress.org/reference/hooks/comment_text

关于 hooks/filters 的任何建议都可以使用 - 我真的不想开始破解评论模板。

comment_text 过滤器挂钩允许 3 个函数参数(因此您错过了其中的 2 个):

  • $comment_text(字符串),主要过滤参数
  • $comment(对象),当前WP_Comment对象实例
  • $args (array),参数数组

所以在这个钩子函数中,这里有一个针对订单备注的示例:

add_filter( 'comment_text', 'customizing_comment_text', 20, 3 );
function customizing_comment_text( $comment_text, $comment, $args ) {
    if( $comment->comment_type === 'review' ) {
        $comment_text = '<p>Comment text injection</p>' . $comment_text;
    }
    return $comment_text;
}

代码进入您的活动子主题(或活动主题)的 functions.php 文件。测试和工作。


要获取特定评论元数据,您将使用函数 get_comment_meta(),例如:

$meta_value = get_comment_meta( $comment->comment_ID, 'your_meta_key', true );

要添加特定评论元数据,您将使用函数 add_comment_meta(),例如:

add_comment_meta( $comment_id, 'your_meta_key', $meta_value, $unique );