it-swarm.com.ru

Как создать разные редактируемые разделы на странице 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?

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

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

41
Vinith Almeida

К сожалению, добавить несколько редактируемых полей на одной странице не так-то просто с помощью 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 прямо в вашу тему .

73
metaColin

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

  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. Остальные ориентированы на весь сайт, если вы хотите, чтобы дополнительный контент отображался на каждой странице.

5
user2019515
<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>
3
Manish

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

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

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

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

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

2
Page Carbajal

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

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

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

0
kregus

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

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

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

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

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

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

0
delbrosit