Kommentar genehmigen – Fügen Sie eine benutzerdefinierte function hinzu, wenn der Kommentar genehmigt wurde

Ich möchte etwas PHP-Speicher sparen, wenn ich Kategorie-Seite (wie 5000 Produkte auf einmal) mit durchschnittlicher Bewertung beurteile, also möchte ich die durchschnittliche Bewertung von Bewertungen jedes Mal speichern, wenn ich einen neuen Kommentar manuell genehmige.

Ich würde gerne erreichen, wenn ich auf “APPROVE” -Button in der Verwaltung klicke, wird es diese PHP-Skripte ausführen.

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 ); 

Solutions Collecting From Web of "Kommentar genehmigen – Fügen Sie eine benutzerdefinierte function hinzu, wenn der Kommentar genehmigt wurde"

Leider gibt es keine Haken oder Filter, die Sie in edit-comments.php könnten. Sie wp_set_comment_status( $comment, 'approve' ); Ihre eigene Admin-Seite mit einer benutzerdefinierten Schaltfläche wp_set_comment_status( $comment, 'approve' ); und wp_set_comment_status( $comment, 'approve' ); Kommentare genehmigen und alles tun, was Sie tun müssen …

EDIT: Ich habe mich geirrt – es gibt die wp_set_comment_status Aktion in wp_set_comment_status function https://wpseek.com/function/wp_set_comment_status/

 do_action( 'wp_set_comment_status', $comment->comment_ID, $comment_status ); 

Du kannst einfach tun:

 add_action('wp_set_comment_status','average_rating',10,2); 

und zu deiner function hinzufügen

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