• Всем привет.

    У меня возникла следующая дилема.
    Я пытаюсь вывести в посты автора в ТОП (а затем те которые уже по поиску идут за исключением конечно посты Vasya), если в поиск было введено имя автора Vasya.

    Я вычисляю id автора по имени и если я получил это user_id, делаю следующее:
    сначала вывожу все посты по user_id и отображаю их но затем мне надо вывести все остальные страницы по поиску за исключением страниц где автор user_id. Но вот тут то беда, результатов второго цикла я не вижу.

    $args1 = array(
    			'author' => $user_id,
    			'paged' => $paged
    	);
    
    	$results_author = new WP_Query($args1); // для первого цикла
    
    	wp_reset_query();
    
    	$args2 = array(
    			'author' > '-' . $user_id, // исключаем статьи автора
    			's' => $search,
    			'paged' => $paged
    	);
    	$results_author_2 = new WP_Query($args2); // для второго цикла

    и далее я прогоняю эти два цикла последовательно:

    if ( $results_author->have_posts() ) { while ( $results_author->have_posts() ) { $results_author->the_post();
    the_title();
    }}
    wp_reset_query();
    
    if ( $results_author_2->have_posts() ) { while ( $results_author_2->have_posts() ) { $results_author_2->the_post();
    the_title();
    }}
    
    // и пейджинация
    
    <?php 
    
    global $wp_query;
    
    $big = 999999999; // need an unlikely integer
    
    echo paginate_links( array(
    		'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    		'format' => '?paged=%#%',
    		'current' => max( 1, get_query_var('paged') ),
    		'total' => $wp_query->max_num_pages
    ));
    ?>

    В итоге выводит только посты автора т е первый цикл (ну и по пейджам их разбивает), второй вообще не выводит. Все это в темплейте search.php. Я думаю что тут дело с пейджинацией.
    Но может кто знает как это компактнее реализовать или вообще другим путем пойти (комбинированные запросы)?
    Мне кажется это решение слишком нерациональным.

    Заранее благодарен.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Юрій

    (@yube)

    Попробуйте выполнять $results_author_2 = new WP_Query($args2); непосредственно перед вторым Циклом, вместо wp_reset_query();

    эх нет все это шляпа//
    жаль что нельзя сделать комбинированный поиск

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Вывод в ТОП в поиске» закрыта для новых ответов.