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