Vejo que é possível classificar uma consulta de usuário pelo número de postagens que cada usuário possui, mas é possível excluir usuários com zero postagens do resultado? Na classe Wp_User_Query, há uma pre_user_query
ação, mas as cadeias de consulta são um grande ponto fraco, portanto, não tenho certeza de que tipo de ação de filtro eu gostaria de usar aqui.
wp-user-query
helgatheviking
fonte
fonte
post_count
== 0?get_posts_by_author_sql
função que gera o SQL para aget_authors()
consulta. Os usuários devem ter uma publicação publicada ou privada para serem incluídos nos resultados. #facepalmget_authors()
resultado como transitório ... então posso simplesmente pular o autor atual sem precisar fazer uma consulta todas as vezes.Respostas:
Bem, eu vim com 2 soluções.
Solução 1 - foreach loop e verifique cada usuário
Este é baseado na solução do @ GhostToast, mas com funções atualizadas do WordPress
Solução 2 -
pre_user_query
ação de calças extravagantesEra isso que eu pensava quando postei minha pergunta quando encontrei a
pre_user_query
ação naWP_User_Query
classe. Se você passarpost_count
como seuorderby
parâmetro, algumas consultas SQL sofisticadas que eu nunca teria descoberto por conta própria juntam as tabelas apropriadas. Então, o que eu fiz foi copiar essa declaração de junção e adicioná-la à minha. Seria melhor se eu pudesse verificar sua presença antes de adicioná-la ... talvez eu use uma correspondência de string no futuro. Mas, por enquanto, já que eu estou configurando a consulta, sei que ela não está lá e ainda não vou me preocupar com isso. Portanto, o código ficou assim:e depois usá-lo
A ideia para um
query_id
parâmetro é de Introdução ao WP_User_ClassO que também é apenas uma referência muito boa sobre
WP_User_Query
fonte
Desde o 4.4, você pode simplesmente usar o parâmetro `has_published_posts '.
Exemplo:
has_published_posts
pode ser verdadeiro / falso (ou nulo) ou uma matriz de tipos de postagem (como neste exemplo).Nota: Estou usando transientes aqui porque esta consulta específica pode ficar bastante pesada, dependendo do sistema, por isso faz sentido armazená-la para usos futuros.
fonte
Enviando como resposta para encerramento:
fonte
get_users_with_role()
não é uma função do WordPress ou estou olhando meu computador há muito tempo?"get_users_with_role": 0 matches across 0 files
. Tambémget_usernumposts
é depreciado, usecount_user_posts()