备注审批-备注审批时增加自定义功能

时间:2016-07-04 作者:Milan Novak

我想在查询具有平均评论评级的类别页面(比如一次5000个产品)时节省一些PHP内存,所以我想在每次手动批准新评论时保存评论的平均评级。

我想实现的是,每当我在administration中点击“APPROVE”按钮时,它都会运行这些php脚本。

function average_rating() {
global $wpdb;

$post_id = get_the_ID();

$ratings = $wpdb->get_results("

    SELECT $wpdb->commentmeta.meta_value

    FROM $wpdb->commentmeta

    INNER JOIN $wpdb->comments on $wpdb->comments.comment_id=$wpdb->commentmeta.comment_id

    WHERE $wpdb->commentmeta.meta_key=\'rating\' 

    AND $wpdb->comments.comment_post_id=$post_id 

    AND $wpdb->comments.comment_approved = 1

    and trim(coalesce($wpdb->commentmeta.meta_value, \'\')) <>\'\'

    ");

$counter = 0;

$average_rating = 0;    

if ($ratings) {

    foreach ($ratings as $rating) {

        $average_rating = $average_rating + $rating->meta_value;

        $counter++;

    } 

    //round the average to the nearast 1/2 point

    return (round(($average_rating/$counter)*2,0)/2);  

} else {

    //no ratings

    return \'0\';

}

}

 $ar = average_rating();
 add_post_meta( $post->ID, \'summary\', $ar );

1 个回复
SO网友:user1049961

遗憾的是,没有可以在中使用的挂钩或过滤器edit-comments.php. 您必须使用自定义按钮构建自己的管理页面,并使用wp_set_comment_status( $comment, \'approve\' ); 要批准评论并执行任何需要执行的操作。。。

编辑:我错了-有wp_set_comment_status 内部操作wp_set_comment_status 作用https://wpseek.com/function/wp_set_comment_status/

do_action( \'wp_set_comment_status\', $comment->comment_ID, $comment_status );
因此,您可以:

add_action(\'wp_set_comment_status\',\'average_rating\',10,2);
并添加到您的功能中

function average_rating($comment_id, $comment_status) {
   if ($comment_status == \'approve\') {
      .....rest of your code

相关推荐

如何根据评论元字段对“EDIT-Comments.php”表中的评论进行排序?

目标在;编辑注释。php“;单击自定义列的标题后,基于注释元字段的表。上下文为了简洁起见,我们假设在发布评论时,一个名为;“红心”;指定给它,以便所有注释都具有从0到10的正整数字段。的bold 下面提到的步骤,前三个步骤是针对上下文和预期工作给出的,问题是在第四个步骤上。1. Creating the columnadd_filter( \'manage_edit-comments_columns\', \'hearts_add_comments_column\' ); function hea