Как создать разные редактируемые разделы на странице WordPress?

34

Я создаю свою первую тему в WordPress и столкнулся с проблемой при добавлении контента в разные разделы.

Мой HTML несколько похож на это,

<div id="maintext">
   <-- Text -->
</div>
<div id="products">
   <-- Text and Images -->
</div>
<div id="about_company">
   <-- Text boxes -->
</div>

Как я могу убедиться, что содержимое, добавленное через редактор wordpress, попадает под соответствующие div? Для "maintext" div я загружу контент из самой страницы, но как добавить динамический контент в другие 2 divs?

Я искал на нескольких форумах, и многие предлагали добавлять контент с помощью виджетов, можно ли это сделать без использования виджетов?

Любая помощь будет с радостью оценена.

Теги:
wordpress-theming

5 ответов

61
Лучший ответ

К сожалению, добавление нескольких редактируемых полей на одной странице не очень просто с помощью Wordpress.

Многие разработчики WP, которые я знаю (включая меня), полагаются на Advanced Custom Fields Plugin для дополнительных полей содержимого.

Действия для этого:

1) Установите ACF вилку.
2) В области настроек для ACF создайте несколько новых полей.
3) Назначьте новые поля для отображения определенной страницы или набора страниц.
4) Обновите свой шаблон страницы для данной страницы, чтобы отображались новые поля.

Например, вы можете создать набор стандартных wysiwyg-полей и затем назначить их на страницу "Обзор". Позвольте назвать эти поля: main_text, products_info и about_company. Как только поля были созданы и назначены странице, при редактировании этой страницы дополнительные поля будут доступны для редактирования.

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

<div id="maintext">
   <!-- Text -->
   <?php if(get_field('main_text')){ //if the field is not empty
        echo '<p>' . get_field('main_text') . '</p>'; //display it
    } ?>
</div>
<div id="products">
   <!-- Text and Images -->
   <?php if(get_field('products_info')){ //if the field is not empty
        echo '<p>' . get_field('products_info') . '</p>'; //display it
    } ?>
</div>
<div id="about_company">
   <!-- Text boxes -->
   <?php if(get_field('about_company')){ //if the field is not empty
        echo '<p>' . get_field('about_company') . '</p>'; //display it
    } ?>
</div>

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

  • 0
    Если мое предложение сработает для вас, пожалуйста, найдите минутку и примите ответ, нажав на большой флажок в левой части этого ответа. Вы даже получаете некоторые очки, делая это :)
  • 2
    Это именно то, что я искал. Надо сказать, что удивительный плагин позволяет легко добавлять несколько редактируемых разделов в WordPress. Большое спасибо и извинения за поздний ответ.
Показать ещё 2 комментария
4
<div id="maintext">
   <?php the_content(); ?>
</div>
<div id="products">
   <?php // echo wp function to get product data; ?>
</div>
<div id="about_company">
   <?php // echo wp function to get about companydata; ?>
</div>
  • 0
    Проголосовал за использование не плагин ответа.
  • 6
    @developerbmw - За что проголосовали? Здесь нет технических подробностей. Что это за загадочная «функция wp для получения данных о продукте» или что-то подобное?
Показать ещё 1 комментарий
4

У вас есть три варианта:

Я считаю, что то, что вы ищете, это вариант 2. Другие более ориентированы на весь сайт, если вы хотите, чтобы дополнительный контент отображался на каждой отдельной странице.

1

Если вы пишете тему, возможно, вам стоит рассмотреть возможность использования WordPress Framework, поэтому вам не нужно начинать с нуля.

Если это не так, подумайте о конечном пользователе. Как они будут добавлять разделы на страницы и сообщения? Будут ли они перемещаться по местам в пользовательском интерфейсе WordPress или будут ли они короткими кодами пользователя?

Моя рекомендация - создать плагин, который отобразит раздел в содержимом документа. Или содержимое виджета, если это так.

Я написал небольшой фрагмент кода, чтобы проиллюстрировать, как вы можете это осуществить, а также потому, что мне это нужно прямо сейчас: D. Вы можете найти его на github здесь https://github.com/lionpage/Front-Office-Document-Sections

Надеюсь, что это поможет

0

Я столкнулся с этой проблемой несколько раз, и, хотя мне задано 3 года, я думаю, что это все еще довольно актуально. Я успешно использовал плагин Multiple Content Blocks иногда:

https://ltz.wordpress.org/plugins/multiple-content-blocks/

После установки плагина вы можете просто включить the_block в свой шаблон:

<div id="maintext">
   <?php the_content(); ?>
</div>
<div id="products">
   <?php the_block('products') ?>
</div>
<div id="about_company">
   <?php the_block('company') ?>
</div>
  • 2
    Разработка прекращена. Разработчик рекомендует ACF вместо: advancedcustomfields.com

Ещё вопросы

Сообщество Overcoder
Наверх
Меню