Yah saya telah datang dengan 2 solusi.
Solusi 1 - foreach loop dan verifikasi setiap pengguna
Yang ini didasarkan dari solusi @ GhostToast, tetapi dengan fungsi WordPress yang diperbarui
//new query with default args
$author_query = new WP_User_Query();
// Get the results
$authors = $author_query->get_results();
if( $authors ) {
foreach( $authors as $author ) {
if ( count_user_posts( $author->id ) >= 1 ) {
echo $author->display_name . '</br>';
}
}
} else {
echo "no users found";
}
Solusi 2 - pre_user_query
aksi celana mewah
Inilah yang saya pikirkan ketika saya memposting pertanyaan saya begitu saya menemukan pre_user_query
tindakan di WP_User_Query
kelas. Jika Anda masuk post_count
sebagai orderby
parameter Anda maka beberapa query SQL mewah yang saya tidak akan pernah tahu sendiri akan bergabung dengan tabel yang tepat bersama. Jadi yang saya lakukan adalah menyalin pernyataan bergabung itu dan menambahkannya ke saya sendiri. Ini akan lebih baik jika saya bisa memeriksa keberadaannya terlebih dahulu sebelum menambahkannya ... mungkin saya akan menggunakan pencocokan string di masa depan. Tetapi untuk sekarang karena saya yang mengatur permintaan, saya tahu itu belum ada dan saya belum akan mengkhawatirkannya. Jadi kodenya menjadi seperti ini:
function authors_with_posts( $query ) {
if ( isset( $query->query_vars['query_id'] ) && 'authors_with_posts' == $query->query_vars['query_id'] ) {
$query->query_from = $query->query_from . ' LEFT OUTER JOIN (
SELECT post_author, COUNT(*) as post_count
FROM wp_posts
WHERE post_type = "post" AND (post_status = "publish" OR post_status = "private")
GROUP BY post_author
) p ON (wp_users.ID = p.post_author)';
$query->query_where = $query->query_where . ' AND post_count > 0 ';
}
}
add_action('pre_user_query','authors_with_posts');
dan kemudian menggunakannya
$args = ( array( 'query_id' => 'authors_with_posts' ) );
$author_query = new WP_User_Query( $args );
Gagasan untuk query_id
parameter berasal dari An Introduction to WP_User_Class
Yang juga hanya referensi yang sangat bagus WP_User_Query
post_count
== 0?