Внимание! С 16-ой версии плагина, произвольные поля формы публикации для произвольных типов записей стало возможным создавать прямо из административной части в разделе "Форма публикации". Данная статья устарела и представляет лишь исторический интерес.
Рассматривая статью "Кастомизация формы публикации Wp-Recall" можно заметить, что о возможности добавления произвольных полей в форму публикации произвольного типа записи там не говорится, хотя функционал произвольных полей Wp-Recall достаточно удобен и хотелось бы его использовать при публикации не только для записей типа "post". Такая возможность есть.
Для добавления произвольных полей в форму публикации произвольного типа записей необходимо решить всего одну задачу - Создать страницу создания и редактирования произвольных полей для нужного типа записи в административной части.
Для создания такой страницы необходимо добавить в код дополнения или в файл функций шаблона такой код:
add_action('admin_menu', 'add_edit_page_custom_fields',30); function add_edit_page_custom_fields(){ add_submenu_page( 'manage-wprecall', 'Произвольные поля', 'Произвольные поля', 'manage_options', 'manage-fields-my-post-type', 'page_fields_my_custom_type'); } function page_fields_my_custom_type(){ //подключаем скрипт для сортировки созданных полей rcl_sortable_scripts(); //подключаем нужный функционал include_once RCL_PATH.'functions/class-rcl-editfields.php'; //указываем, что работать будем с произвольными полями для //типа записи 'post_type' $f_edit = new Rcl_EditFields('post_type'); //код необходим для сохранения данных полей при редактировании if($f_edit->verify()) $fields = $f_edit->update_fields(); $fields = '<h2>Произвольные поля для нашего типа записи</h2>'; $fields .= $f_edit->edit_form(); echo $fields; }
В итоге, среди настроек плагина Wp-Recall мы получим новую страницу "Произвольные поля", где будем наблюдать примерно такую картину
т.е. мы уже можем создавать произвольные поля с нужными нам именами и типами, сортировать их и выводить в форме публикации для заданного типа записи. Недостаток один - у полей нет своих настроек.
Данный функционал позволяет создавать свои настройки для произвольных полей, чтобы в дальнейшем, влиять на порядок вывода созданных полей в форме публикации, более подробно рассмотрим этот вопрос в следующей статье, а сейчас остановимся на добавлении возможности указывать данное поле в качестве обязательного.
Чтобы добавить в произвольное поле настройку необходимо в функцию $f_edit->edit_form(); передать массив с необходимыми данными, в нашем случае, код будет выглядеть так:
$fields .= $f_edit->edit_form(array( $f_edit->option('select',array( 'name'=>'requared', 'notice'=>'обязательное поле', 'value'=>array('Нет','Да') )) ));
Данный массив добавит возможность указывать наши поля обязательными для заполнения при выводе в форме публикации.
По-умолчанию, создаваемые произвольные поля получают свой metakey автоматически, это бывает не всегда удобно, поэтому если хочется привязать к форме публикации уже существующие на сайте произвольные поля, то при инициализации функционала указываем дополнительные данные:
$f_edit = new Rcl_EditFields('post_type',array('custom-slug'=>1));
Тогда появиться возможность указывать произвольное значение metakey для создаваемого поля
Осталось только вывести созданные произвольные поля и данные в них на странице редактирования произвольного типа записи в административной части, подставляем вместо post_type свой тип записи:
add_action('admin_init', 'add_admin_fields_post_type_rcl', 1); function add_admin_fields_post_type_rcl() { add_meta_box( 'custom_fields_editor_post', 'Произвольные поля post_type', 'custom_fields_list_posteditor_rcl', 'post_type', 'normal', 'high' ); }
Как можно убедиться, создание произвольных полей для своего типа записи, используя функционал плагина Wp-Recall достаточно прост и удобен.
Важно помнить, что если мы создаем произвольные поля для определенного типа записи, то именно для этого типа записи мы должны создавать и форму публикации, где созданные произвольные поля и будут предлагаться для заполнения.
Ура! нереально круто! Огромное спасибо)
Здесь название произвольного типа записи Вы передаете как post_tupe? или я не могу найти где его название? или вообще название произвольного типа записи не нужно?))) (написал криво так как хочу спать)
вместо post_type из примера указываете свой тип записи, для которого создаются произвольные поля
А несколько форм может быть? типа id-1 id-2
Для произвольных типов записей пока нет, только один набор произвольных полей.
Добрый день/ночь
Спасибо большое за ваш продукт. Очень круто.
Теперь вопрос, добавил пользовательские поля к пользовательским типам на сайт. Все отлично добавилось. Единственный нюанс - когда поле создано, я не могу его править. В функции прописана ссылка на файл sortable.js. Но его нет. Это должен быть файл из библиотеки jQuery UI sortable?
Спасибо
Вы добавили страницу редактирования полей в админке? Добавьте на этой странице функцию rcl_sortable_scripts(); она подключит нужные файлы.
Нет, я зарегистрировал сабменю.
Какое название должна иметь страница?
Я это и имею ввиду, в коде функции где формируете редактор произвольных полей для своего типа записи разместите указанную выше функцию
Работает. Огромное спасибо.
Как определить Место вывода произвольных полей в форме, например над контентом публикации ?
Внесу небольшую поправку. С новой версией плагина немного изменились пути к файлам и теперь вместо данного пути include_once RCL_PATH.'functions/rcl_editfields.php'; необходимо указывать путь include_once RCL_PATH.'functions/class-rcl-editfields.php';
Пока не переделал ничего на странице Произвольные поля не отображалось.