web-dev-qa-db-ja.com

特定のユーザーに対するwp_count_posts、wp_count_terms、およびwp_count_comments

関数wp_count_postswp_count_termsおよびwp_count_commentsが、おそらくユーザーのIDを使用することによって、特定のユーザーに対してのみ結果を返す方法はありますか?

カスタム投稿タイプ用のカスタム「今すぐ」ダッシュボードウィジェットを作成していますが、現在のユーザーのみにデータを表示し、サイト全体には表示しないようにする必要があります。

前もって感謝します。


EDIT:以下の@kaiserのコメントに答えて、私は次のことをしましたが、何も起こりません - 結果はフィルタのときと同じです。 (そうではないはずです - このユーザーが公開されているemployee投稿タイプの数が異なることを確認してください)。私の関数の中のコードはまったく呼び出されていないようで、その中にtest echoステートメントを出力していません。

<?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

オリジナルのコードに基づいて(カスタムのwpクエリを通じて)ゼロからカウントを生成するために、wp_count_posts()wp_count_comments()用の独自のカスタムコードを作成しました(wp_count_posts()wp-includes/post.phpに、wp_count_comments()wp-includes/comment.phpにあります)。すばらしい努力をありがとう@kaiser。

0
Ana Ban