WP Query: как получить сообщения от конкретного автора или сообщения с определенным метазначением

У меня на всех моих постах дополнительное пользовательское поле (поле пользователя acf), если почта имеет соавтора.

У всех пользователей есть своя авторская страница, на которой отображаются все их сообщения. Пока нет проблем.

Но то, что я сейчас хочу, – это запрос, в котором я получаю все сообщения, в которых автор является фактическим автором и всеми сообщениями, где он или она является только соавтором в пользовательском поле.

Мой код довольно прост до сих пор, но на самом деле не работал. Я предполагаю, что параметр «отношение» предназначен только для сравнения мета-запросов-субаретов.

$args = array( 'post_type' => array( 'post' ), 'posts_per_page' => 20, 'relation' => 'OR', array( 'author' => $author_ID, ), array( 'meta_key' => 'authorfeld', 'meta_value' => $showme[ID], // This is the authors id from the custom field ) ); 

спасибо

Действительно ли вы уверены, что правильно задали имя meta_key? В вашем примере говорится «authorfeld», но, возможно, это должно быть «авторское поле»? Также $showme[ID] должен быть $showme['ID'] если только ID является определенной переменной.

В любом случае ваш массив $ args не совсем корректен. Попробуйте следующие примеры:

 // Get the posts from this author, but not this coauthor. $author_not_coauthor = array( 'post_type' => array( 'post' ), 'posts_per_page' => 20, 'author' => $author_ID, 'meta_query' => array( array( 'key' => 'authorfeld', 'value' => $showme['ID'], 'compare' => 'NOT LIKE', ), ), ); // Get the posts from this coauthor, but not this author. $coauthor_not_author = array( 'post_type' => array( 'post' ), 'posts_per_page' => 20, 'author__not_in' => array( $author_ID ), 'meta_query' => array( array( 'key' => 'authorfeld', 'value' => $showme['ID'], ), ), ); 

Я нашел некоторые подсказки здесь: Могу ли я объединить 2 новых WP_Query ($ variable)?

Поэтому я создал два отдельных запроса и объединил их в новый массив:

 $wp_query = new WP_Query(); $wp_query->posts = array_merge( $query1->posts, $query2->posts ); foreach($wp_query->posts as $post) : setup_postdata( $post ); 

А потом обычные вещи.