在wp_set_Comment_Status挂接中获取帖子ID

时间:2016-07-06 作者:Pepa Novak

我正在尝试更新meta_value 每当我在WordPress仪表板中手动批准评论时。我不知道如何动态地执行此操作,但当我手动添加帖子ID时,它会起作用:

add_action( \'wp_set_comment_status\', \'average_ratings\', 10, 2 );
function average_ratings( $comment_ID, $comment_status ) {
    if ( $comment_status == \'approve\' ) {
        function average_ratingfn() {
            global $wpdb;

            $post_id = \'208\';  

            // bla bla bla
        }
        $commentar = average_ratingfn();
        add_post_meta( \'208\', \'overall\', $commentar );   
    }
} 
如何替换208 具有get_the_ID()?

1 个回复
SO网友:birgire

您应该考虑删除average_ratingfn() 函数定义,并使用post ID的输入参数调用它。

您可以尝试使用(未测试)获取注释对象:

$comment = get_comment( $comment_ID );
然后确保它不为null,或者您有一个实际的注释对象:

if( $comment instanceof \\WP_Comment )
    $post_id = $comment->comment_post_ID;
你应该能够得到comment_post_ID 来自该对象的字段。

我想你也可以用钩子wp_transition_comment_status() 函数,其中注释对象位于输入参数中。

例如挂钩:

  • comment_{$new_status}_{$comment->comment_type}

  • comment_{$old_status}_to_{$new_status}

  • transition_comment_status