글쎄, 나는 2 가지 해결책을 생각해 냈습니다.
해결 방법 1-foreach 루프 및 각 사용자 확인
이것은 @GhostToast의 솔루션을 기반으로하지만 업데이트 된 WordPress 기능을 사용합니다.
//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
스스로 알아 내지 못했던 멋진 SQL 쿼리가 적절한 테이블을 함께 조인합니다. 그래서 내가 한 일은 그 조인 진술서를 복사하여 내 자신에 추가하는 것이 었습니다. 추가하기 전에 먼저 존재 여부를 확인할 수 있다면 더 좋을 것입니다 ... 미래에 문자열 일치를 사용할 것입니다. 그러나 지금은 쿼리를 설정하는 사람이므로 쿼리가 없다는 것을 알고 아직 걱정하지 않습니다. 따라서 코드는 다음과 같이 나타났습니다.
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 인 사용자를 단순히 결과에서 버리는 것이 과세되지 않습니까?