ঠিক আছে আমি 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_Query
post_count
== 0 থেকে বাদ দেওয়া কি কোনও কম ট্যাক্স হবে ?