Публикация в группе: Плагин WP-Recall - Личный кабинет на WordPress

Категории группы: Полезное

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

В этой статье мы рассмотрим новые возможности по добавлению произвольных полей в форму публикации от WP-Recall.

Само произвольное поле представляет из себя массив определенных параметров, в зависимости от которых нам будет выводится тот или иной тип поля. Массив произвольного поля имеет примерно следующую структуру:

array(
	'type' => '', //тип поля
	'notice' => '', //пояснение к полю
	'slug' => '', //meta_key поля
	'title' => '', //заголовок поля
	'required' => true/false, //указание обязательного заполнения
	'values' => array(), //массив значений для полей множественными значениями
);

где

'type' - тип поля, может быть:

  • text - обычное текстовое поле,
  • number - числовое поле,
  • textarea - многострочное поле,
  • email - поле email,
  • date - поле даты с поддержкой datepicker,
  • time - поле времени,
  • checkbox - чекбосы (поле множественного значения),
  • radio - радиокнопки (поле множественного значения),
  • select - выпадающий список (поле множественного значения),
  • multiselect - поле мультиселекта (поле множественного значения),
  • file - загрузка файла,
  • url - указание URL,
  • dynamic - динамически добавляемые поля,
  • agree - поле соглашения,
  • 'custom' - специальный тип поля, который позволяет выводить произвольный контент внутри поля

'slug' - указание meta_key, с которым значение поля будет сохраняться в базу данных и по которому это значение можно получить

'title' - заголовок поля, строка

'required' - параметр указывающий на обязательность заполнения поля

'values' - массив значений, который будет предлагаться к выбору пользователю (только для полей множественного значения)

Чтобы не тянуть резину добавим сразу несколько произвольных полей непосредственно в форму публикации, на примере добавления текстового поля и чекбоксов. Для этого определяем тип поля, его meta_key, заголовок и возможные значения к выбору:

add_filter('rcl_public_form_fields','add_custom_field_public_form',10,2);
function add_custom_field_public_form($fields,$form){
    
    //добавляем проверку на нужный тип записи в форме публикации
    //которой будем выводить наше поле
    if($form->post_type != 'post') return $fields;
    
    $fields[] = array(
        'type' => 'text',
        'slug' => 'my-text-field',
        'title' => 'Заголовок текстового поля',
        'notice' => 'напишите что то в текстовом поле'
    );

    $fields[] = array(
        'type' => 'checkbox',
        'slug' => 'my-checkbox-field',
        'title' => 'Заголовок поля',
        'notice' => 'укажите одно из значений нашего поля',
        'values' => array(
            'первое значение',
            'второе значение',
            'третье значение'
        )

    );
    
    return $fields;

}

В результате, мы увидим форме публикации для записей типа post, что то подобное:

Кроме того, данные поля будут также выводится в редакторе публикаций типа post административной части в отдельном блоке произвольных полей:

Так легко и просто мы добавили наши поля к форме публикации.

Но не будем забывать, что в менеджере полей формы публикации административной части есть также блок дефолтных полей, предлагаемых по-умолчанию. Плюс этих полей в том, что ими можно управлять - менять их местоположение в форме публикации, убирать их оттуда, изменять заданные первоначально параметры, такие как, заголовок, подпись к полю и тд. Добавление своих полей именно в список дефолтных полей может являться более интересным решением, например, для разработчиков дополнений, где необходимо каким-либо образом расширять форму публикации за счет произвольных полей, но при этом давать пользователю возможность воздействовать на них.

Рассмотрим порядок добавления своего дефолтного поля.

Добавим сформированные ранее поля в список дефолтных полей формы публикации:

add_filter('rcl_default_public_form_fields','add_default_field_public_form',10,2);
function add_default_field_public_form($fields,$post_type){
    
    $fields[] = array(
        'type' => 'text',
        'slug' => 'my-text-field',
        'title' => 'Заголовок текстового поля',
        'notice' => 'напишите что то в текстовом поле'
    );

    $fields[] = array(
        'type' => 'checkbox',
        'slug' => 'my-checkbox-field',
        'title' => 'Заголовок поля',
        'notice' => 'укажите одно из значений нашего поля',
        'values' => array(
            'первое значение',
            'второе значение',
            'третье значение'
        )

    );
    
    return $fields;

}

Добавленный код будет предлагаться наши поля в области неактивных полей формы публикации.

В этом случае, мы можем даже не указывать тип записи для которого данные поля будут добавляться, они будут предлагаться в менеджере формы публикации всех типов записей, а администратор сам будет решать нужны ему поля или нет, при необходимости просто удаляя их. При размещении полей таким образом следует учитывать, что админ сможет переназначать все внутренние настройки таких полей, кроме meta_key, поэтому их указание в момент регистрации является необязательным и если были указаны, то носят рекомендательный характер значений по-умолчанию.

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

Вот так, легко и просто можно добавлять свои простые поля в форму публикации WP-Recall.

3

Автор публикации

не в сети 2 дня

Андрей CS

12K
занят
Комментарии: 2729Публикации: 481Регистрация: 30-11--0001Продаж/Покупок: 0/0