Question

Voici la situation

J'ai personnalisé la soumission des commentaires par laquelle les utilisateurs peuvent fournir une note, ce qui est stocké sous forme de valeur de méta dans le tableau des commentaires. Je peux interroger pour retourner la valeur moyenne et afficher dans le post. Pas de problème jusqu'à présent.

Ce que je veux faire maintenant, c'est trier les messages selon cette note moyenne.

Mon code pour obtenir la note moyenne est:

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

    ");
$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 'no rating';
}
}

Je pense que je dois commencer à stocker la valeur moyenne en tant que champ post-méta, sinon je devrais parcourir les requêtes dans des requêtes avec plusieurs jointures, ce qui semble être une très mauvaise idée. J'espère que quelqu'un avec un nouvel ensemble d'yeux pourra m'aider à réfléchir à l'architecture.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top