Widzę, że możliwe jest sortowanie zapytania użytkownika według liczby postów każdego użytkownika, ale czy można wykluczyć użytkowników z zerowymi wpisami z wyniku? W klasie Wp_User_Query jest pre_user_query
akcja, ale ciągi zapytania są ogromną słabą stroną, więc nie jestem pewien, jakiego rodzaju działania filtrującego chciałbym tutaj użyć.
wp-user-query
helgatheviking
źródło
źródło
post_count
== 0?get_posts_by_author_sql
funkcji, która generuje SQL dlaget_authors()
zapytania. Użytkownicy muszą mieć opublikowany lub prywatny post, aby uwzględnić je w wynikach. #facepalmget_authors()
wynik jako przejściowy ... wtedy mogę po prostu pominąć obecnego autora bez konieczności każdorazowego zapytania.Odpowiedzi:
Cóż, wymyśliłem 2 rozwiązania.
Rozwiązanie 1 - foreach loop i zweryfikuj każdego użytkownika
Ten oparty jest na rozwiązaniu @ GhostToast, ale ze zaktualizowanymi funkcjami WordPress
Rozwiązanie 2 - fantazyjne
pre_user_query
działanie spodniWłaśnie o tym myślałem, kiedy zadałem pytanie, gdy znalazłem
pre_user_query
akcję wWP_User_Query
klasie. Jeśli podaszpost_count
jakoorderby
parametr, wówczas jakieś fantazyjne zapytania SQL, których nigdy bym nie odkrył, łączą ze sobą odpowiednie tabele. Więc to, co zrobiłem, to skopiuj tę instrukcję dołączenia i dodaj ją do mojej. Byłoby lepiej, gdybym mógł najpierw sprawdzić jego obecność przed dodaniem ... być może użyję dopasowania ciągu w przyszłości. Ale na razie, ponieważ to ja konfiguruję zapytanie, wiem, że go nie ma i po prostu nie będę się tym martwić. Kod okazał się więc taki:a następnie go użyć
Pomysł na
query_id
parametr pochodzi z An Introduction to WP_User_ClassCo jest również bardzo dobrym odniesieniem
WP_User_Query
źródło
Od wersji 4.4 możesz po prostu użyć parametru `has_published_posts '.
Przykład:
has_published_posts
może mieć wartość true / false (lub null) lub tablicę typów postów (jak w tym przykładzie).Uwaga: Używam tutaj stanów nieustalonych, ponieważ to konkretne zapytanie może być dość ciężkie w zależności od systemu, więc sensowne jest przechowywanie go do przyszłych zastosowań.
źródło
Przekazanie jako odpowiedź na zamknięcie:
źródło
get_users_with_role()
nie jest funkcją WordPress lub czy patrzyłem na komputer zbyt długo?"get_users_with_role": 0 matches across 0 files
.get_usernumposts
Jest również amortyzowany, użyjcount_user_posts()