Поддержка Проблемы и решения Построение архива категория/записи

  • Всем привет. Я создал произвольный тип записи и произвольную таксономию. Для таксономии создал шаблон типа archive-name_t.php. Все норм. То есть есть врачи и таксономия — специалисты. То есть скажем Терапевт и врачи, ЛОР и врачи. Вот мне это надо вывести на странице архива. Я сначала с get_terms ищу термины таксономии, потом с wp_query в foreach вывожу врачей, которые принадлежат этому термину. Все норм. Но пагинация работает не правильно. Таксономии остаются на месте пустые, а врачи листаются.
    Вот код

    
    <?
    $cat_doc = get_terms('lam_spec', array('hide_empty' => false));
    foreach ($cat_doc as $category) :
    ?>
    <div class="index-b-4">
    <div class="container">
    <div class="row">
    <div class="col-xs-12">
    <div class="index-b-4-top">
    <h2><?=$category->name?></h2>
    </div>
    <div class="index-b4-cont-box">
    <div class="index-b-4-cont-flex">
    
    <?
    	$paged  = get_query_var( 'paged' ) ?: 1;
    	$docs = new WP_Query(array(
    		'post_type' => 'lam_doctor',
    		'tax_query' => [
    			'relation' => 'AND',
    				[
    					'taxonomy' => 'lam_spec',
    					'field'    => 'id',
    					'terms'    => $category->term_id,
    				]
    		],
    		'orderby'     	 => 'menu_order',
    		'order'       	 => 'ASC',
    		// 'posts_per_page' => '5',
    		'paged'           => $paged,
    	));
    
    	if($docs->have_posts()) :
    		while($docs->have_posts()): $docs->the_post();
    ?>
    	<div class="index-b-4-t">
    			<div class="index-b-4-tc index-b-4-tc-img"><div><img src="<?=get_field('img_min_doc', get_the_ID())?>" alt="img"></div></div>
    			<div class="index-b-4-tc index-b-4-tc-name">
    				<div class="index-b-4-tc-name-fio"><?the_title();?></div>
    				<div class="index-b-4-tc-name-spec"><?=get_field('spec_doc', get_the_ID())?></div>
    				<div class="index-b-4-tc-name-expir"><?=get_field('short_info_doc', get_the_ID())?></div>
    				<div class="index-b-4-tc-name-staj"><?=get_field('stazh_job_doc', get_the_ID())?></div>
    			</div>
    			<div class="index-b-4-tc index-b-4-tc-btn">
    				<a href="#zap" class="fancy-modal"><span>Записаться на прием</span></a>
    				<span>Прием от:  <b><?=get_field('price_doc', get_the_ID())?> р.</b></span>
    			</div>
    		</div>
    <?
    		endwhile;
    	endif;
    	wp_reset_postdata(); 
    ?>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
    <?
    endforeach;
    ?>
    
    <?
    wp_pagenavi(); 
    ?>
    

    Как можно иначе это сделать, чтоб при пагинации пропадали категории, если пустые?

    • Тема изменена 4 года, 7 месяцев назад пользователем noress.
Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Блин, код как раскозявило. Сейчас попробую исправить)

    а зачем вам вообще свой цикл?
    стандартный архив таксономии и так должен выводить по терминам.

    Не выводит, я пробовал. Там чисто список докторов и напротив каждого edit

    
    wp_pagenavi( array( 'query' => $docs ) );
    

    Спасибо, это избавило меня от лишней страницы пагинации, почему то она там была. А как быть с терминами. У Терапевта скажем один врач, на следующей странице, просто терапевт пустой. Ну это понятно почему, потому что у меня foreach болтается сам по себе блин. Но как бы это переписать, чтоб foreach зависел от wp_query

    О все, нашел. Я wp_query передвинул прям перед foreach и поставил условие

    
    if(!$docs->have_posts()) {
    	continue;	
    }
    

    И все норм.
    Спасибо Flector, что откликнулся

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