@user_tm

Как правильно реализовать поиск по сайту?

Какие бы плагины я не установил, они не отображаются в админ панели. Подключаю форму поиска в шапку сайта с помощью функции get_search_form(), а сама форма находится в файле searchform.php и имеет вот такой html шаблон
<form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ) ?>" >	
	<input type="text" value="<?php echo get_search_query() ?>" name="s" id="s" />
	<input type="submit" id="searchsubmit" value="найти" />
</form>

Если я правильно понимаю, то по нажатию на кнопку "найти" данные отправляются для обработки в файл search.php, а в нем вот такой код
<?php get_header(); ?>
<?php get_sidebar(); ?>
 <div class="col-12 col-xl-9">
	 <main id="main" class="site-main">

	 <?php if ( have_posts() ) : ?>

	 	
	 		<h1 >
	 			<?php
	 			/* translators: %s: search query. */
	 			printf( esc_html__( 'Результвты поиска по запросту: %s', 'apmechTheme' ), '<span>' . get_search_query() . '</span>' );
	 			?>
	 		</h1>
	 	

	 	<?php
	 	/* Start the Loop */
	 	while ( have_posts() ) :
	 		the_post();

	 		/**
	 		 * Run the loop for the search to output the results.
	 		 * If you want to overload this in a child theme then include a file
	 		 * called content-search.php and that will be used instead.
	 		 */
	 		get_template_part( 'template-parts/content', 'search' );

	 	endwhile;

	 	the_posts_navigation();

	 else :

	 	get_template_part( 'template-parts/content', 'none' );

	 endif;
	 ?>

	 </main><!-- #main -->
	    </div>
	    <!-- /.col-8 -->         
	   </div>
	   <!-- /.row -->
	 </div>
	 <!-- /.container -->

<?php get_footer(); ?>
где с помощью функции get_template_part( 'template-parts/content', 'search' ); подгружаю код с файла content-search.php, а вот что должно быть в этом файле я не знаю, (я вообще не уверен правильно ли организовал конструкцию поиска) но экспериментируя я вставлял код из стандартных циклов для вывода постов (там где есть функции the_title, the_excerpt и т.п.) и тогда wordpress находил и выдавал мне результаты поиска, но только из стандартных типов записей, а мне нужно что бы wp искал еще и среди пользовательских типов записей. Подскажите, как это все правильно реализовать?
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
@user_tm Автор вопроса
Нашел решение, вернее подсказали, только руки все не доходили написать ответ. Проблема была в том что при регистрации пользовательского типа записи, в параметре 'exclude_from_search' => был true, а нужно указать false, это будет означать 'исключить_из_поиска' => false, значит нет не исключать, а true значит да исключать. И всего то.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Aricus
Почему бы в search.php не проигнорировать встроенный цикл постов, а сделать собственный, через new WP_Query? Туда можно и разные типы записей засунуть.
$warsztaty_q = new WP_Query(array(
    'post_type' => array('kalendarium', 'warsztaty')

Только нужно как-то прописать условие поиска, но, думаю, это будет легче, чем через плагины.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы