Детские страницы и подстраницы не отображаются. Почему?

Вопрос или проблема

Я создал дочернюю страницу. Однако, когда я обращаюсь к “http://example.com/Page/ChildPage“, она не появляется?

Страница (имя файла = page.php -> content-page.php) [РАБОТАЕТ]

Дочерняя страница (имя файла = page.php -> content-child-page.php) [НЕ РАБОТАЕТ]

page.php

$slug = get_post_field( 'post_name', get_post() );
echo $slug;


while ( have_posts() ) : the_post();

    get_template_part( 'template-parts/page/content' , $slug );

endwhile; // Конец цикла.

Экран администратора для всей страницы

Просмотр страницы пожертвований

Дочерняя страница от пожертвования. При нажатии на дочернюю страницу происходит переадресация на главную страницу

page.php

content-payment.php

Вам нужно проверить, имеет ли страница родителя, чтобы отобразить шаблон дочерней страницы, или если у нее его нет, отобразить шаблон родительской страницы. Если $post->post_parent равно 0, это означает, что у нее нет родителя.

while ( have_posts() ) : the_post();
    $template = ($post->post_parent == 0) ? 'page' : 'child-page';
    get_template_part( 'template-parts/page/content' , $template );
endwhile; // Конец цикла.

Ответ или решение

Причины, по которым дочерние страницы и подстраницы не отображаются

Если вы столкнулись с проблемой, когда дочерняя страница на вашем сайте не отображается, это может быть вызвано несколькими факторами. Рассмотрим основные из них, а также способы их устранения.

1. Неправильная структура темплейтов

Судя по коду из вашего описания, вы используете функцию get_template_part для подключения соответствующего шаблона странички. Важно убедиться, что файл шаблона для дочерней страницы действительно существует и правильно именован. Убедитесь, что путь и имя файла совпадают с тем, что вы указали:

  • Убедитесь, что шаблон для дочерней страницы называется content-child-page.php и находится в правильной директории (обычно это /template-parts/page/).
  • Проверьте наличие файла и его содержимого, так как отсутствие содержимого также может вызвать проблемы с отображением.

2. Проверка родительской страницы

Каждая дочерняя страница привязана к родительской. В вашем коде присутствует условие, которое проверяет наличие родительской страницы:

$template = ($post->post_parent == 0) ? 'page' : 'child-page';

Это условие определяет, какой шаблон загружать: если у страницы нет родителя (значение post_parent равно 0), загружается основной шаблон страницы, иначе — шаблон дочерней страницы. Если дочерняя страница не отображается, возможно, что на самом деле она не привязана к родительской странице. Это можно проверить через админ-панель WordPress.

3. Перегрузка правил перезаписи (Rewrite Rules)

Существует вероятность, что правила перезаписи (rewrite rules) на вашем сайте неправильно настроены. Это может произойти, если вы создавали или изменяли пользовательские типы записей или таксономии. Для устранения проблемы попробуйте сделать следующее:

  • Зайдите в админ-панель WordPress, перейдите в «Настройки» → «Постоянные ссылки» и просто сохраните настройки, не производя изменений. Это перезапустит правила перезаписи.

4. Конфликты с другими плагинами или темами

Конфликты с установленными плагинами или темами также могут стать причиной того, что дочерние страницы не отображаются. Чтобы проверить это, выполните следующие шаги:

  • Отключите все плагины и проверьте, решена ли проблема. Если проблема исчезла, включайте плагины по одному, чтобы выявить конфликтующий.
  • Переключитесь на стандартную тему WordPress (например, Twenty Twenty-One) и снова проверьте.

5. Ошибки в JavaScript или CSS

Иногда проблемы с отображением могут быть вызваны ошибками в JavaScript или CSS, которые мешают процессу рендеринга страницы. Откройте консоль разработчика (F12) в вашем браузере и проверьте, нет ли там сообщений об ошибках, которые могли бы указывать на причину проблемы.

Заключение

Если дочерние страницы не отображаются, это может быть вызвано несколькими факторами, такими как неправильная структура шаблонов, отсутствие или неправильная привязка к родительской странице, проблемы с перезаписью URL-адресов и конфликты с плагинами. Следуя описанным рекомендациям, вы сможете идентифицировать и устранить проблему. Если несмотря на все усилия проблема сохраняется, рекомендуется обратиться к профессионалам или на сообщество WordPress для более глубокого анализа вопроса.

Для улучшения видимости в поисковых системах, убедитесь, что все ваши страницы имеют соответствующие мета-теги и контент, оптимизированный под SEO.

Оцените материал
Добавить комментарий

Капча загружается...