@0906ddd

Как добавить условие в поиск?

сейчас ищу только в blog,
но если добавлю критерий еще для news или еще что-то ( неважно)
например так
'post_type' => array('news', 'blog')

то для news нужен другой шаблон (get_template_part( 'template-parts/news-item', get_post_format() );

а не get_template_part( 'template-parts/blog-item', get_post_format() );

<section class="search">
	<div class="container">
	    <h3 class="search__title"><?php echo get_search_query(); ?></strong>
	    </h3>
	    <div class="search__inner">
	        <?php
	            $search = new WP_Query( array(
	                'post_type' => array('blog'),
	                'posts_per_page' => -1,
	                's' => get_search_query()
	            ));
	        if( $search->have_posts() ) : while ( $search->have_posts() ) : $search->the_post(); 
	            get_template_part( 'template-parts/blog-item', get_post_format() );
	        ?>

	        <?php endwhile;
	        else:
	             echo '<div class="msg-page">'.$translate[$lang]['search_error'].'</div>';
	        endif; ?>
	    </div>
	</div>
</section>
  • Вопрос задан
  • 30 просмотров
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Вы можете проверять post_type в цикле перед подключением шаблона так:

if ( get_post_type() === 'news' ) {
	get_template_part( 'template-parts/news-item', get_post_format() );
} else {
	get_template_part( 'template-parts/blog-item', get_post_format() );
}


Еще хороший пример из практики: проверяется наличие шаблона archive-{post-type}.php в папке templates/archive/, если его нет, подключается базовый archive-simple.php

$post_type = get_post_type();

if ( file_exists( get_theme_file_path( 'templates/archive/archive-' . $post_type . '.php' ) ) ) {
	get_template_part( 'templates/archive/archive-' . $post_type );
} else {
	get_template_part( 'templates/archive/archive-simple' );
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы