WP - расширить основной запрос с помощью пользовательского мета-запроса - PullRequest
1 голос
/ 21 июня 2019

Я пишу тему, которая поддерживает сообщения с несколькими авторами.Я храню идентификаторы соавторов в пост-мета.Проблема в том, что на странице архива автора мне нужно показывать не только сообщения автора, но и сообщения, которые он является соавтором, и они должны быть в одном цикле.Итак, вот мой вопрос: есть ли хороший способ расширить основной запрос с помощью специального (при этом сохраняя подкачку и т. Д.).

add_action('pre_get_posts', function ($query) {
 if (is_admin() || !$query->is_main_query()) return;

 if ($query->is_archive() && $query->is_author()) {

 $author_id = get_query_var('author');

 // extend the main query with these post ids
 $coauthored_posts = get_posts([
 'fields'         => 'ids',
 'posts_per_page' => '-1',
 'post_status'    => 'publish',
 'meta_query' => [
        [
 'key' => 'co_authors',
 'value' => $author_id,
 'compare'   => 'LIKE',
        ]
      ]
    ]);
  }
});

Ответы [ 2 ]

2 голосов
/ 21 июня 2019

Вы можете объединить meta_query:

'meta_query' => array(
    'relation' => 'OR',
    array(
        'key' => 'author',
        'value' => $author_id,
        'compare'   => 'LIKE',
    ),
    array(
        'key'     => 'co_authors',
        'value'   => $co_author_id,
        'compare' => 'LIKE',
    ) 
)
1 голос
/ 21 июня 2019
add_action('pre_get_posts', function ($query) {
    if (is_admin() || !$query->is_main_query()) return;
    if ($query->is_archive() && $query->is_author()) {

        $author_id = get_query_var('author');

        // extend the main query with these post ids
        $cauthored_arg = array(
            'post_type' => 'post',
            'post_status'    => 'publish',
            'posts_per_page' => '-1',
            'orderby '=>'ID'
            'meta_query' => array(
                array(
                    'key'     => 'co_authors',
                    'value'   => $author_id,
                    'compare' => 'LIKE',
                ),
            )
        );  

        $coauthored_posts = new WP_Query( $cauthored_arg );
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...