WordPress: подсчитывать все комментарии пользователя и метаданные в комментариях - PullRequest
3 голосов
/ 14 февраля 2011

Я настроил некоторые пользовательские мета против определенных комментариев для пользователей, использующих эту функцию: add_comment_meta( $wp_comment_id, 'accepted', true );

Что я хочу сделать, это показать для каждого пользователя в своем профиле / автора / имени пользователя, сколько из этих специальныхкомментарии, которые у них есть, например, если пользователь сделал 20 комментариев, а 5 имели метаданные принятого, равного true, тогда значение будет 5.

Как я могу это сделать?Спасибо.

Ответы [ 2 ]

3 голосов
/ 20 февраля 2011

Я предполагаю, что это последняя версия WordPress. Вы можете увидеть схему схемы базы данных здесь: http://codex.wordpress.org/images/9/9e/WP3.0-ERD.png

Я не проверял это, но что-то вроде этого должно сработать:

<?php
getCommentCount('John', 'accepted', 'true');

function getCommentCount($author_name, $meta_key, $meta_value){
    if(empty($author_name)){
        return;
    }

    $author_name    = trim($author_name);
    $sql            = 'SELECT count(*) FROM ' . $wpdb->comments . ' comments '
                    . ' INNER JOIN ' . $wpdb->commentmeta . ' meta ON comments.comment_ID = meta.comment_id '
                    . ' WHERE comments.comment_author = %s AND meta.meta_key = %s ANd meta.value = %s ';

    $commentCount   = $wpdb->get_var($wpdb->prepare($sql, $author_name, $meta_key, $meta_value));

    return $commentCount;
}
1 голос
/ 08 июля 2012

Я не понимаю, что вы подразумеваете под "подсчитать метаданные" ...
какое значение в метаданных ... вы имеете в виду метаданные пользователя или комментарий.

В любом случае - по порядкучтобы посчитать комментарии конкретного пользователя, вы можете ...
Поместите этот код в ваши функции php

function countUserComments($userID) {
    $args = array(
        'user_id' => $userID
    );
    $comments = get_comments( $args );
    echo count($comments);
}

Вы можете использовать его в любом месте, где у вас есть доступный идентификатор пользователя, например

<?php echo countUserComments($user->ID); ?>

.

Надеюсь, это кому-нибудь поможет;) Приветствия, Сагив

...