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

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

    Натягиваю тему на wordpress из html-верстки. Стартовые файлы темы взял на underscores.me

    Там есть в частности файл search.php

    На его основе пытаюсь сделать поиск по одной рубрике. Все бы хорошо, но у меня 1-я найденная запись дублируется. Если найдена только 1 запись 1 пост и выводится. Если же больше одной записи найдено, 1-я запись дублируется. 2-я и далее записи уже по одной выводятся.
    Ниже приведу код из моего search.php
    Подскажите пожалуйста почему это происходит и как исправить?

    
    <?php
    
    get_header('search');
    ?>
    
    	<section id="primary" class="content-area">
    		<main id="main" class="site-main">
            <?php
    
                $posts = get_posts( array(
                'numberposts' => 0,
    
                'category'    => 23,
                'orderby'     => 'date',
                'order'       => 'DESC',
                'include'     => array(),
                'exclude'     => array(),
                'meta_key'    => '',
                'meta_value'  =>'',
                'post_type'   => 'post',
                'suppress_filters' => true, // подавление работы фильтров изменения SQL запроса
                ) );
    
    		if ( have_posts() ) : ?>
    
    			<header class="page-header">
    				<h1 class="page-title">
    					<?php
    					/* translators: %s: search query. */
    					printf( esc_html__( 'Результаты поиска:', 'rada' ), '<span>' . get_search_query() . '</span>' );
    					?>
    				</h1>
    			</header><!-- .page-header -->
    
                <?php
    			/* Start the Loop */
    			while ( have_posts() ) :
    				?>
                    <p class='result-text'>Найдена страница: <a href="<?php the_permalink()?>" class='located-page-name'><?php the_title();?></a></p>
                    <p class='post-img'><a href="<?php the_permalink()?>"><?php the_post_thumbnail();?></a></p>
    
                    <?php
                    the_excerpt();
                    the_post();
    
    				//get_template_part( 'template-parts/content', 'search' );
    
    			endwhile;
    
    			//the_posts_navigation();
    
    		else :
    
    			//get_template_part( 'template-parts/content', 'none' );
    
    		endif;
    		?>
    
    		</main><!-- #main -->
    	</section><!-- #primary -->
    </div>
    <?php
    //get_sidebar();
    get_footer();
    
    ?>
    
    • Тема изменена 4 года, 5 месяцев назад пользователем shiva2019.
    • Тема изменена 4 года, 5 месяцев назад пользователем shiva2019.
    • Тема изменена 4 года, 5 месяцев назад пользователем shiva2019.
    • Тема изменена 4 года, 5 месяцев назад пользователем shiva2019.
    • Тема изменена 4 года, 5 месяцев назад пользователем shiva2019.
    • Тема изменена 4 года, 5 месяцев назад пользователем Yui. Причина: для оформления кода существует кнопка code
    • Тема изменена 4 года, 5 месяцев назад пользователем shiva2019.
Просмотр 6 ответов — с 1 по 6 (всего 6)
  • двойные кавычки здесь на форуме заменились на »

    Модератор Yui

    (@fierevere)

    永子

    потому что нужно использовать кнопку code, тогда ничего не заменяется

    Исправил. Еще бы мой вопрос решить..))

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Еще бы мой вопрос решить..))

    Не очень понял зачем там вызывается get_posts. Если хотите изменить основной запрос страницы, то используйте хук pre_get_posts.

    почитал на wp_kama об этой фунции и попытался встроить в functions.php да видно нет нормального понимания как это работает..пока ничего не получилось в общем.. А почему в текущем моем примере 1-я запись дважды выводится? И почему у меня выводятся левые посты если при отсутствии кода:

    'category'    => 23,
                'orderby'     => 'date',
                'order'       => 'DESC',
                'include'     => array(),
                'exclude'     => array(),
                'meta_key'    => '',
                'meta_value'  =>'',
                'post_type'   => 'post',
                'suppress_filters' => true, // подавление работы фильтров изменения SQL запроса
                ) );

    Дело в том что если я задаю фразу для поиска, и эта фраза есть только в 1 посте..у меня выводились найденный пост (без кода выше) еще 2 поста, где этой фразы нет и они с другой рубрики.
    Я хотел так. Есть уменя рубрика блог. С указанием этой рубрики будут создаваться посты для блога и на блоге есть форма поиска созданная в contact form7
    Соответствено когда я на странице блога запускаю поиск мне нужно что поиск выполнялся только в записях принадлежащих рубрике Блог

    • Ответ изменён 4 года, 5 месяцев назад пользователем shiva2019.
    • Ответ изменён 4 года, 5 месяцев назад пользователем shiva2019.

    В общем я решил свой вопрос. Будем считать тема закрыта.

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