Вопрос или проблема
Я создаю CMS на wordpress и добавил несколько страниц под одну родительскую страницу. Я генерирую ссылки для всех дочерних страниц и когда пользователь кликает на ссылки, они должны открывать дочернюю страницу. Однако, когда я кликаю на ссылки, открывается индексная страница и нет содержимого дочерней страницы. Возможно, это связано с использованием файла .htaccess. У меня нет никаких знаний о htaccess. Помогите, пожалуйста?
<?php
$pages = get_pages( array( 'child_of' => $post->ID, 'sort_column' => 'post_date', 'sort_order' => 'desc' ) );
foreach ($pages as $page) {
?>
<div class="contentarea">
<div class="leftside"><img alt="" src="http://zom.jtechsolutions.co/wp-content/themes/zone/images/pic_1.jpg" /></div>
<div class="rightside">
<h2><?php echo $page->post_title; ?></h2>
<?php echo substr(strip_tags($page->post_content),0,50); ?>
<a href="<?php echo get_post_permalink($page->ID); ?>">Читать далее...</a>
</div>
</div>
<?php
}
?>
.htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Согласно кодексу, get_post_permalink применяется к пользовательским типам записей. Я не думаю, что вы используете пользовательский тип записи, верно?
Вместо этого попробуйте get_page_link( $page->ID )
.
Ответ или решение
Создание дочерних страниц в WordPress может иногда вызывать проблемы, особенно если к ним не удается получить доступ через ссылки в пользовательском интерфейсе. Постараемся рассмотреть вашу ситуацию детально, обсудим возможные причины проблемы и предложим решения.
Проблема с дочерними страницами
Вы описали, что создали несколько дочерних страниц под одной родительской страницей и ожидаете, что по клику на ссылки пользователь будет переходить на соответствующую дочернюю страницу. Однако вместо этого открывается главная страница вашего сайта. Это может быть связано с несколькими факторами, включая настройки .htaccess, ошибки в коде или проблемы с ссылками на страницы.
Проверьте код ссылки
В вашей текущей реализации вы используете get_post_permalink($page->ID);
для получения ссылки на страницы. Поскольку вы не используете пользовательский тип записи, будет правильнее воспользоваться функцией get_page_link($page->ID)
, как было предложено вами в предыдущем комментарии. Попробуйте изменить вашу строку кода следующим образом:
<a href="<?php echo get_page_link($page->ID); ?>">Read More...</a>
Эта функция должна корректно вернуть URL дочерней страницы.
Проверьте настройки постоянных ссылок (Permalinks)
Одной из причин, по которым дочерние страницы могут не открываться, может быть неправильная настройка постоянных ссылок. Чтобы убедиться в этом:
- Перейдите в меню администратора WordPress.
- Выберите «Настройки» → «Постоянные ссылки» (Settings → Permalinks).
- Нажмите «Сохранить изменения», не внося никаких изменений. Это может обновить ваши настройки .htaccess.
Проверка файла .htaccess
Ваш файл .htaccess выглядит корректно для стандартной установки WordPress:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Убедитесь, что файл не был изменён или повреждён в процессе работы. Если у вас нет опыта работы с .htaccess, лучше оставить его в неизменном виде или сделать резервную копию перед внесением изменений.
Тестирование доступа к дочерним страницам
После внесения вышеупомянутых изменений, попробуйте перейти на ссылки дочерних страниц напрямую (например, скопировав URL в адресной строке браузера). Если страницы открываются, но ссылки не работают, возможно, проблема связана с JavaScript или другими элементами на вашей странице.
Визуальная проверка
Если у вас установлены плагины для кэширования или любая другая функциональность, которая может повлиять на отображение страниц, попробуйте временно отключить их, чтобы убедиться, что это не вызывает конфликтов.
Заключение
Проблемы с отображением дочерних страниц в WordPress могут быть вызваны различными факторами, начиная от кода и заканчивая настройками сервера. Выполнив предложенные шаги, вы значительно увеличите шансы на решение проблемы. Если ни один из предложенных методов не помог исправить ситуацию, возможно, стоит обратиться за помощью на форумы WordPress или к профессиональным разработчикам для более глубокого изучения проблемы.
Эти рекомендации помогут вам быстро устранить возникшую проблему с дочерними страницами, улучшать ваш сайт и обеспечивать лучшее взаимодействие с пользователями.