वैसे मैं 2 समाधान लेकर आया हूं।
समाधान 1 - फॉरेस्ट लूप और प्रत्येक उपयोगकर्ता को सत्यापित करें
यह @ घोस्टटॉस्ट के समाधान पर आधारित है, लेकिन अपडेट किए गए वर्डप्रेस फ़ंक्शन के साथ
//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";
}
समाधान 2 - फैंसी पैंट pre_user_query
एक्शन
यह तब हुआ जब मैंने कक्षा pre_user_query
में एक्शन पाते ही अपना प्रश्न पोस्ट कर दिया WP_User_Query
। यदि आप post_count
अपने orderby
पैरामीटर के रूप में गुजरते हैं, तो कुछ फैंसी एसक्यूएल क्वेरी जो मैंने कभी नहीं सोचा था कि अपने आप ही एक साथ उचित तालिकाओं में शामिल होने के लिए होता है। तो मैंने जो किया वह था कि बयान में शामिल हों और इसे अपने दम पर जोड़ें। यह बेहतर होगा यदि मैं इसे जोड़ने से पहले पहले इसकी उपस्थिति की जांच कर सकता हूं ... शायद मैं भविष्य में एक स्ट्रिंग मैच का उपयोग करूंगा। लेकिन अब के बाद से मैं जानता हूं कि मैं जिस प्रश्न को स्थापित कर रहा हूं वह यह नहीं है और मैं अभी इसके बारे में चिंता नहीं करूंगा। तो कोड ऐसा निकला:
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');
और फिर इसका उपयोग करने के लिए
$args = ( array( 'query_id' => 'authors_with_posts' ) );
$author_query = new WP_User_Query( $args );
query_id
पैरामीटर के लिए विचार एक परिचय से WP_User_Class का है
जिस पर सिर्फ एक बहुत अच्छा संदर्भ है WP_User_Query
post_count
== 0 हैं?