web-dev-qa-db-fra.com

wp_count_posts, wp_count_terms et wp_count_comments pour un utilisateur spécifique?

Existe-t-il un moyen pour les fonctions wp_count_posts, wp_count_terms et wp_count_comments de renvoyer leurs résultats uniquement pour un utilisateur spécifique, éventuellement à l'aide de la variable ID de l'utilisateur?

Je crée un widget de tableau de bord personnalisé "En ce moment" pour un type d'article personnalisé et j'en ai besoin pour afficher les données uniquement pour l'utilisateur actuel, pas pour l'ensemble du site.

Merci d'avance.


EDIT: En réponse au commentaire de @kaiser ci-dessous, j’ai fait ce qui suit, mais rien ne se passe - les résultats sont les mêmes que lorsque le filtre is out (ce qui ne devrait pas être le cas - vérifié que cet utilisateur a un nombre différent de types de publication employee publiés). Il semble que le code dans ma fonction ne soit même pas appelé du tout, car il ne sort pas la déclaration test echo à l'intérieur:

<?php

// employer right now widget
wp_add_dashboard_widget('dashboard_right_now', __('Right Now'), 'employer_dashboard_right_now');
function limit_to_current_user( $where ) {
    global $wpdb, $current_user;
    $current_user_ID = (int) $current_user->ID;

    $new_where = $wpdb->prepare( 
        $where . " AND post_author = %s "
        ,$current_user_ID );

    var_dump($new_where); // not dumping anything, not even string(0) "" and no errors reported whatsoever, even in php_error_log

    return $new_where;
}
function employer_dashboard_right_now() {

    // modify query to limit to current user
    add_filter('posts_where', 'limit_to_current_user');
    // execute queries
    $num_employees = wp_count_posts('employee');
    $num_comm = wp_count_comments();
    // remove filter
    remove_filter('posts_where', 'limit_to_current_user');

    // more code here...

}

?>
2
Ana Ban

J'ai fini par écrire mon propre code personnalisé pour wp_count_posts() et wp_count_comments() afin de générer les comptages à partir de zéro (via des requêtes wp personnalisées) en fonction de leur code d'origine (wp_count_posts() est dans wp-includes/post.php et wp_count_comments() est dans wp-includes/comment.php). Merci @ Kaiser pour cet excellent effort.

0
Ana Ban