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

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

    Подскажите, может кто то сталкивался с таким. У меня на паре страниц перестало отображаться содержимое которое должно быть на соответствующей странице.

    При переходе по ссылке на такую страницу отображается: Архив:название_страницы т.е. если есть страница Новости то отображается Архив: новости и содержимое страницы абсолютно не то что должно быть.

    На сайте 5 страниц и только 2 некорретно отображаются.

    В постоянных ссылках если поставить «Простые» то все страницы нормально отображаются.

    Если же поставить «Название записи» возникате такая ситуация.

    Самое интересное, часть страниц работает корректно, а пара нет..

    Почему то используется arhive.php. Это уже проверил..

    • Тема изменена 3 месяца, 1 неделя назад пользователем shiva2019.
    • Тема изменена 3 месяца, 1 неделя назад пользователем shiva2019.
    • Тема изменена 3 месяца, 1 неделя назад пользователем shiva2019.
Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Коллизии могут возникать, если слаги страницы и рубрики совпадают и при этом из url рубрики убрано /category/.

    Буду искать.

    У меня эти проблемы начались после очередного созданного кастомного типа постов. Создал отдельный файл который подключается в functions.php

    В этом отдельном файле прописал создание нескольких кастомных постов. Некоторые с таксономией для них, некоторые без.

    Сейчас законментировал все что касается кастомных постов. Убрал в страницах шаблоны. В итоге обе «проблемные» страницы переходят на главную, при том что ссылка в меню показывает куда надо ссылку..

    Сейчас законментировал все что касается кастомных постов.

    После таких манипуляций полезно пересохранять настройки постоянных ссылок.

    Обновил. Но погоды это не сделало.

    Сделал откат на более раннее состояние как файлов так и БД.

    Изменил URL страниц. У меня были одинаковые имена с именами post-type.

    Т.е. к примеру есть post-type «news» и страница localhost/project/news поменял на localhost/project/novosti

    Докинул в свою тему свои php-файлы последние. Обновил постоянные ссылки. В итоге ссылки заработали.

    Но теперь когда я захожу на новости и в списке щелкаю переход читать новость..у меня почему то переходит на пост из общей категории постов а не кастомных.

    Выборку по кастомному типу для списка новостей делаю так:

    
     <?php
    	    $posts = get_posts( array(
    		    'numberposts' => 0,
    		    'orderby'     => 'date',
    		    'order'       => 'ASC',
    		    'include'     => array(),
    		    'exclude'     => array(),
    		    'meta_key'    => '',
    		    'meta_value'  =>'',
    		    'post_type'   => 'news',
    		    'suppress_filters' => true,
    	    ) );
    
    	    foreach( $posts as $post ){
    		    setup_postdata($post);
    		    ?>
    
                <div class="news-item">
                    <a href="<?php the_permalink()?>" class="post-img-a"><img src="<?php the_post_thumbnail_url()?>" alt="<?php the_title()?>" class="news-item__img"></a>
    
                    <h3 class="news-item-header"><?php the_title()?></h3>
                    <p class="news-item-content"><?php echo strip_tags(get_the_excerpt(), '<p>'); ?></p>
    
                    <div class="news-detail-wrapper">
                        <p class="data-post"><?php echo get_the_date() ?></p>
                        <p class="news-detail"><a href="<?php the_permalink()?>" class="detail-inner">Читать далее</a></p>
                    </div>
    
                </div>
    	    <?php }
    
    	    wp_reset_postdata();
    
    	    if(count($posts) == 0){?>
                <p class="absent_goods">В данной категории нет новостей!</p>
    	    <?php } ?>
    

    и через и по url видно что адрес правильный. Однако содержимое не верно.

    Как вообще происходит передача в single-(post-type).php информации какой пост выводится? Я сделал свой single-news.php на основе single.php созданный в underscores.me
    ниже привожу ту часть кода которая относится в выводу информации поста:

    
    		<?php
    			while ( have_posts() ) :
    				the_post();
    
    			    echo "post_number = ".get_the_ID()  ;
    				get_template_part( 'template-parts/content', get_post_type() );
                    ?>
                    <div class="news-item">
                        <div class="news-item__img_wrapper">
                            <img src="<?php the_post_thumbnail_url()?>" alt="<?php the_title()?>" class="news-item__img">
                        </div>
    
                        <h3 class="news-item-header"><?php the_title()?></h3>
                        <p class="news-item-content"><?php echo strip_tags(get_the_content(), '<p>'); ?></p>
                        <p class="data-post"><?php echo get_the_date() ?></p>
                    </div>
                    <?php
    				the_post_navigation();
    
    				// If comments are open or we have at least one comment, load up the comment template.
    				if ( comments_open() || get_comments_number() ) :
    					comments_template();
    				endif;
    
    			endwhile; // End of the loop.
    			?>
    
    • Ответ изменён 3 месяца, 1 неделя назад пользователем shiva2019.

    Как вообще происходит передача в single-(post-type).php информации какой пост выводится?

    Движок разбирает по регулярным выражениям запрошенный адрес;
    определяет что именно нужно выводить;
    делает выборку записей из базы;
    ищет в Теме наиболее подходящий шаблон;
    инклюдит найденный шаблон;
    Цикл в шаблоне выводит выбранные записи;

    Механизм абсолютно идентичный для любых типов записей и любых архивов (по терму, по дате, по автору)

    Правильно ли я понимаю? Есть примеру у меня пост, к примеру «новость1«. его url localhost/project/novost1

    при переходе на пост в файле «single-(post-type).php» или просто single.php происходит поиск в базе где есть адрес localhost/project/novost1 и если такой пост найден, в single уже передаются данные этого поста?

    Сейчас для интереса зашел на обычную не кастомную запись зайдя в Записи в консоли WP.

    Перешел в редактирование записи и отуда прямо перешел по ссылке.(у меня classic редактор) В итоге у меня произошел переход на другой пост, не тот в который я зашел на редактирование. И на этот же пост(не тот что надо) я попадаю из кастомных постов..

    Нет, не правильно. Сначала поиск в базе, потом вызов шаблона для вывода.

    Роутер должен разобрать путь /project/novost1 на тип=project и слаг=novost1, выбрать из базы нужную запись и только после этого подключить шаблон.

    Понятно. Осталось разобраться почему у меня 1 и то же пост выводится..этот код работал ранее..сейчас нет..опять где то путаница что ли..хотя ж вобще не выводит ни 1 пост нормально..буду дальше ковыряться..

    Проверил. single.php и single-news.php используются моим WP (в зависимости от типа поста). Но почему не выводит тот пост по ссылке на который перехожу — не понятно.

    Есть у меня для теста еще 1 wp на отдельной схеме БД MYSQL. Там все работает. Для интереса взял single.php оттуда и в этот где проблемы WP в тему подкинул. Разницы нет. Явно не в single.php дело. Но где копать проблему не понятно..

    в постоянных ссылках для интереса изменил на Простые..разницы нет

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

    Разобрался в чем дело.

    В шапке которая подключается в single, я использовал переменную $posts для своей выборки и таким образом видимо перебиваю исходный $posts — своими значениями ее. А т.к. эта переменая в цикле используется далее — данные в ней другие.

    Заметил имя на другое и теперь все нормлаьно выбирается из БД.

    Вопрос закрыт. Спасибо всем кто пытался помочь 🙂

    • Ответ изменён 3 месяца, 1 неделя назад пользователем shiva2019.
    • Ответ изменён 3 месяца, 1 неделя назад пользователем shiva2019.
Просмотр 11 ответов — с 1 по 11 (всего 11)