Как напечатать содержимое страниц в области фронтенда.

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

Как напечатать содержимое страниц в области фронтенда.

Я новичок в WordPress и пытаюсь создать сайт. Мне необходимо отображать содержимое страниц, когда кликаются соответствующие пункты меню. Мой page.php содержит

<?php while ( have_posts() ) : the_post(); 
                      $page_data = $post->ID;
                      if($page_data == '116')
                      {
                      ?>    

                      <center><b><h2>ДОБРО ПОЖАЛОВАТЬ В КЛИНИКУ!!</h2></b></center>
                     <?php 

                      }
                     else {

                     ?>

                      <h1 class="entry-title"><?php the_title(); ?></h1>
                      <?php
                    the_content();

                     }
                      endwhile; ?>

Но мое содержимое не отображается. Заголовок отображается нормально. В чем ошибка в коде? Пожалуйста, помогите мне.

Ваш код в порядке, однако основная ошибка заключается в том, что страница #116 не существует на вашем сайте WP, поэтому главная или домашняя страница не отображает никаких данных. Обычно, чтобы избежать использования ID страницы, я использую код if (is_page('имя-страницы')) {?>
Иногда это лучше, чем ID страницы, потому что номер ID не всегда одинаков на новой установке WP, просто помните, что нужно настроить постоянные ссылки на красивый формат, используя /%permalinks%/

Возможно, проблема в том, что либо (1) the_content() фильтруется так, что ничего не показывается, либо (2), что содержимое отправляется на веб-страницу, но что-то его скрывает.

Сначала убедитесь, что есть содержимое для отображения:

} else {
?>
    <h1 class="entry-title"><?php the_title(); ?></h1>

<?php
    echo 'Перед содержимым';
    echo $post->post_content;
    echo 'После содержимого';
}

Если ничего не скрывает содержимое (например, JavaScript или CSS), оно должно отображаться на странице между Перед содержимым и После содержимого. Если нет, дважды проверьте, взглянув на исходный код веб-страницы, чтобы увидеть, было ли что-то добавлено в этой части.

Если оно отображается, замените echo $post->post_content; на the_content() и обновите страницу. Если содержимое фильтруется, скорее всего, это происходит на фильтре the_content. Попробуйте удалить эти функции фильтров:

} else {
?>
    <h1 class="entry-title"><?php the_title(); ?></h1>
<?php
    remove_all_filters( 'the_content' );
    echo 'Перед содержимым';
    the_content();
    echo 'После содержимого';
}

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

На практике вам следует найти этот код и отключить его (возможно), удалив этот проблемный фильтр. remove_all_filters() – это крайний вариант. Он может удалить фильтры, которые вам нужны. Например, фильтры, добавляющие кнопки социальных сетей или полезные ссылки.

Я сделал это, используя $post->post_content; это напрямую получает и отображает данные из базы данных. Это работает идеально для меня.

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

Конечно! Давайте разберемся с вашей задачей по правильному отображению контента страниц в WordPress.

Ваш текущий код выглядит неплохо, однако проблема может быть связана с тем, что страница с идентификатором 116 не существует, или с тем, что функция the_content() не выводит контент по другой причине. Вот несколько шагов, которые помогут вам решить вашу проблему.

1. Проверьте существование страницы

Первое, что нужно сделать — убедиться, что страница с ID 116 действительно существует на вашем сайте. Это можно проверить в админке WordPress:

  1. Перейдите в раздел "Страницы".
  2. Найдите нужную страницу и проверьте её ID.

Если страница отсутствует, вам стоит использовать название страницы вместо ID. Например, вместо

if($page_data=='116')

можно сделать так:

if (is_page('название-страницы'))

2. Вывод контента

Ваш код для вывода заголовка и контента выглядит правильно. Обратите внимание, что функция the_content() может не показывать контент по нескольким причинам, например, из-за фильтров. Для начала попробуйте вывести контент напрямую:

else {
    ?>
    <h1 class="entry-title"><?php the_title(); ?></h1>
    <?php
    echo 'Перед контентом';
    echo $post->post_content; // Прямой доступ к контенту
    echo 'После контента';
}

Если контент отображается между "Перед контентом" и "После контента", значит, с the_content() что-то не так.

3. Проверка фильтров

Если вы видите контент с использованием $post->post_content, но не можете его вывести с помощью the_content(), возможно, какие-то фильтры на the_content блокируют отображение. Вы можете временно убрать все фильтры для тестирования:

else {
    ?>
    <h1 class="entry-title"><?php the_title(); ?></h1>
    <?php
    remove_all_filters('the_content'); // Удаляем все фильтры
    echo 'Перед контентом';
    the_content(); // Пытаемся отобразить контент
    echo 'После контента';
}

Если это сработает, значит, какой-то фильтр конфликтует с нормальным выводом контента. Вам стоит изучить код вашей темы и любых установленных плагинов на наличие add_filter() для the_content.

Заключение

Если все вышеупомянутое не помогает, напоминаю, что вы всегда можете обратиться к исходному коду темы или задать вопросы на форумах, где обсуждаются разработки на WordPress. Ваш подход с использованием $post->post_content также является допустимым и эффективным способом в случае, если все другие методы не сработали.

Надеюсь, эти советы помогут вам успешно отобразить контент страниц на вашем сайте!

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

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