web-dev-qa-db-ja.com

'カスタム投稿タイプ'の投稿を少なくとも1つ含むすべての作家を取得する

どうやってそれを達成できますか? count_user_postsget_users を見つけましたが、どうすればそれらを希望の結果にマージできますか?本当にWP DB Queryを使う必要がありますか?

4
user9

今のところpost_typeのサポートはcount_user_posts()では現在利用できません、

そのため、テーマのfunctions.phpファイルに以下のコードを追加してください。

function count_user_posts_by_type( $userid, $post_type = 'post' ) {
    global $wpdb;
    $where = get_posts_by_author_sql( $post_type, true, $userid );
    $count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
    return apply_filters( 'get_usernumposts', $count, $userid );
}

これで、この関数はuser idpost_typeをパラメータpost_type='post'としてデフォルトとし、関係するpost_typeについてそのユーザーの投稿数を取得します

あなたはあなたがユーザーによって投稿カウントをチェックする必要があるところで以下をエコーすることによってそれを確かめることができます。

$user_posts = count_user_posts_by_type( 1, 'page' );
echo $user_posts; // This would return the post count for user id 1 and post_type page.

カスタム投稿タイプでも同じことができます。これで、ユーザーIDを取得してこの関数を通過し、1つ以上の投稿を持つ著者の名前を表示する必要があります。

以下のコードを追加して、1つ以上の投稿を持つユーザーのリストを表示します。

$blogusers = get_users();
foreach ( $blogusers as $user ) {
    if ( count_user_posts_by_type( $user->ID, 'post') ) {
         echo $user->user_nicename . '</br>';
    }
}

上記のコードはpost_typepostの公開された1つ以上の投稿を持つすべてのユーザーをリストします。

2
Maruti Mohanty