Я пытаюсь найти способ запросить CPT конкретным автором, но также, если meta_key имеет определенное значение.Wordpress WP_Query Несколько запросов
Например, мой CPT имеет прикрепленный к нему идентификатор автора, а также настраиваемое поле «получатель». Мне нужны все сообщения этого типа от этого автора, а также все сообщения этого типа, где «получатель» = этот автор.
(Надежда Я объяснил, что достаточно хорошо!)
Я обычно довольно хорошо с SQL, но только имея случайный мозг пердеть момент и не могу понять это. Как я уже сказал, любая помощь очень ценится!
== решаемые ==
Благодаря @ 3pepe3 предложившего параметр meta_query из WP_Query. Немного изменила мою CPT-логику и теперь имеет красивую рабочую систему.
Решение было добавить новый мета-поле для каждого поста, содержащего идентификатор пользователя исходного отправителя, а затем запустить два meta_queries для извлечения сообщения, где ток user_id соответствует либо отправителя или получателя поля, любит так:
$args = array(
'post_type' => 'activity',
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'DESC',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'sender',
'value' => $user_id,
'type' => 'BINARY',
'compare' => '='
),
array(
'key' => 'recipient',
'value' => $user_id,
'type' => 'BINARY',
'compare' => '='
)
)
);
$query = new WP_Query($args);
hi @ 3pepe3, спасибо за предложение, к сожалению, набор результатов, возвращенный этим запросом, содержит только те результаты, в которых автор также является получателем. Я думаю, вы на что-то с meta_query, хотя +1 для этого! – JRM47R1X
Исходя из вашего ответа, если бы я добавил новое настраиваемое поле (например, «sender»), я мог бы использовать несколько массивов meta_query и использовать оператор OR для соответствия любому отправителю получателя. Немного неопрятный, поскольку это по существу дублирование уже имеющегося параметра «автор», но я не могу найти другой способ соединения запроса между почтовыми данными и пост-метаданными. – JRM47R1X
В вашем запросе вы получаете сообщения, в которых $ user_id является автором, а затем в вашем union вы получаете сообщения, в которых получатель meta_key - тот же $ user_id. Таким образом, это нормально, что возврат содержит только те результаты, когда автор также является получателем. Итак, если вы хотите получить сообщение от одного автора к другому «получателю», вам нужно только изменить «author» => $ author_id », а в массиве meta_query выберите нужное имя получателя' 'value' => $ recipient_id, '(вы должны объявить $ author_id и $ recipient_id) – 3pepe3