Подтвердить что ты не робот

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

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

Мой HTML выглядит примерно так:

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

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

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

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

4b9b3361

Ответ 1

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

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

Шаги, чтобы это произошло:

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 непосредственно в свою тему.

Ответ 2

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

  1. Создайте область виджетов, где вы сможете затем отображать содержимое в текстовом виджете: http://codex.wordpress.org/Function_Reference/register_sidebar
  2. Создайте шаблон, где вы получите содержимое другой страницы: http://codex.wordpress.org/Page_Templates#File_Folders
  3. Создайте новый мета-блок для всех ваших страниц: http://codex.wordpress.org/Function_Reference/add_meta_box

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

Ответ 3

<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>

Ответ 4

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

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

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

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

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

Ответ 5

Я столкнулся с этой проблемой несколько раз, и, хотя мне задано 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>

Ответ 6

Бороться с этим и не хотел использовать плагин. Единственный вариант WordPress, который я нашел, - это использование пользовательских полей. Это работает, но только для текста, и довольно громоздко.

Другой вариант без плагинов - просто использовать HTML в редакторе WordPress, но это, конечно, тоже далеко не идеально.

Наконец я сдался и выбрал плагин Advanced Custom Fields.

Ответ 7

Привет, я в настоящее время разрабатываю тему с этой настройкой. Есть два способа добиться этого:

Виджет и исправлена панель администратора (настройки настройщика)

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

если исправлено в админ-панели, вы должны включить раздел .php в ваши functions.php

edit * преимущество виджетов в том, что вы можете расположить их так же, как в обычной боковой панели