Я вижу, что можно отсортировать пользовательский запрос по количеству сообщений, которые есть у каждого пользователя, но возможно ли исключить пользователей с нулевыми сообщениями из результата? В классе Wp_User_Query есть pre_user_query
действие, но строки запроса являются огромным слабым местом, поэтому я не уверен, какой тип действия фильтра я бы хотел использовать здесь.
wp-user-query
helgatheviking
источник
источник
post_count
== 0?get_posts_by_author_sql
функции, которая генерирует SQL дляget_authors()
запроса. Пользователи должны иметь опубликованное или личное сообщение, которое будет включено в результаты. #facepalmget_authors()
результат как кратковременный ... тогда я могу просто пропустить текущего автора без необходимости каждый раз делать запрос.Ответы:
Ну, я придумала 2 решения.
Решение 1 - цикл foreach и проверка каждого пользователя
Этот основан на решении @ GhostToast, но с обновленными функциями WordPress.
Решение 2 - модные штаны
pre_user_query
действияЭто то, о чем я думал, когда отправлял свой вопрос, когда нашел
pre_user_query
действие вWP_User_Query
классе. Если вы передадите его вpost_count
качествеorderby
параметра, то некоторые причудливые SQL-запросы, которые я сам никогда бы не понял, объединяют правильные таблицы. Поэтому я скопировал это заявление о присоединении и добавил его в свое собственное. Было бы лучше, если бы я мог проверить его наличие, прежде чем добавить его ... возможно, я буду использовать совпадение строк в будущем. Но сейчас, поскольку я задаю запрос, я знаю, что его там нет, и я пока не буду беспокоиться об этом. Итак, код получился так:а затем использовать его
Идея для
query_id
параметра взята из введения в WP_User_ClassЧто также является очень хорошей ссылкой на
WP_User_Query
источник
Начиная с 4.4 вы можете просто использовать параметр has_published_posts.
Пример:
has_published_posts
может быть либо true / false (или null), либо массивом типов записей (как в этом примере).Примечание: здесь я использую переходные процессы, потому что этот конкретный запрос может быть довольно тяжелым в зависимости от системы, поэтому имеет смысл сохранить его для использования в будущем.
источник
Отправка в качестве ответа для закрытия:
источник
get_users_with_role()
не является функцией WordPress или я слишком долго смотрю на свой компьютер?"get_users_with_role": 0 matches across 0 files
. Такжеget_usernumposts
амортизируется, используйтеcount_user_posts()