Intereting Posts
Показать панель приветствия на панели инструментов для каждого пользователя Как сделать домашние виджеты горизонтальными WP Insert Post Если пользователь обновляет отмену новой публикации Включить определенную страницу в свой шаблон Запретить пользователю публиковать сообщения в определенных категориях Как получить идентификатор срока таксономии? Добавить меню метаболикс для публикации страницы редактирования используя get_template_part () внутри виджета и передающих переменные Как обновить статус страницы из публикации в черновик и черновик Как сделать одноразовый импорт или миграцию данных? Возврат значения с PHP-страницы WordPress query unique post meta – поиск всего одного значения без дубликатов для раскрывающегося списка Как добавить параметр отношения к моему запросу фильтра? Связывание должностей врачей с конкретными службами для медицинской практики Файл доступен, но дает 404 в wordpress

Добавление нескольких настраиваемых полей на общую страницу настроек

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

На данный момент я хотел бы создать два поля: один для номера телефона и второй для адреса:

function register_fields() { register_setting('general', 'my_first_field', 'esc_attr'); add_settings_field('my_first_field', '<label for="my_first_field">'.__('My Field' , 'my_first_field' ).'</label>' , 'print_custom_field', 'general'); } function print_custom_field() { $value = get_option( 'my_first_field', '' ); echo '<input type="text" id="my_first_field" name="my_first_field" value="' . $value . '" />'; } add_filter('admin_init', 'register_fields'); 

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

Итак, это будет выглядеть так:

 function register_fields() { register_setting('general', 'my_first_field', 'esc_attr'); add_settings_field('my_first_field', '<label for="my_first_field">'.__('My Field' , 'my_first_field' ).'</label>' , 'print_first_field', 'general'); register_setting('general', 'my_second_field', 'esc_attr'); add_settings_field('my_second_field', '<label for="my_second_field">'.__('My Field' , 'my_second_field' ).'</label>' , 'print_second_field', 'general'); } function print_first_field() { $value = get_option( 'my_first_field', '' ); echo '<input type="text" id="my_first_field" name="my_first_field" value="' . $value . '" />'; } function print_second_field() { $value = get_option( 'my_second_field', '' ); echo '<input type="text" id="my_second_field" name="my_second_field" value="' . $value . '" />'; } add_filter('admin_init', 'register_fields'); 

Но это, вероятно, не лучший способ сделать это, я попытался создать settings_section но он просто не работал или не сохранял и т. Д. Его просто очень запутывает.

Ну, второй бит кода технически правильный способ сделать это. Однако в конце add_settings_field() вы можете передавать аргументы.

Пожалуйста, просмотрите ссылку на функцию WordPress Add_Settings_Field . Это поможет вам лучше понять, как add_settings_field() функция add_settings_field() .

Теперь, с учетом сказанного, вы можете использовать «общую» функцию для вашего обратного вызова. Такие, как я делаю на странице параметров, когда я разрабатываю темы.

Вот пример того, как я это делаю.

 // My Example Fields add_settings_field( 'tutorial_display_count', 'Tutorial Display Count', 'ch_essentials_textbox_callback', 'ch_essentials_front_page_option', 'ch_essentials_front_page', array( 'tutorial_display_count' // $args for callback ) ); add_settings_field( 'blog_display_count', 'Blog Display Count', 'ch_essentials_textbox_callback', 'ch_essentials_front_page_option', 'ch_essentials_front_page', array( 'blog_display_count' // $args for callback ) ); // My Shared Callback function ch_essentials_textbox_callback($args) { $options = get_option('ch_essentials_front_page_option'); echo '<input type="text" id="' . $args[0] . '" name="ch_essentials_front_page_option[' . $args[0] . ']" value="' . $options['' . $args[0] . ''] . '"></input>'; } 

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

–Редактировать–

Хорошо, это то, что должно быть для вас. Просто измените код по мере необходимости, я написал это на лету. Я проверил его, чтобы проверить, и это сработало. Вам просто нужно изменить add_settings_field (s) в соответствии с вашими потребностями. Если вам нужно добавить больше, просто скопируйте и вставьте его и отредактируйте. Удостоверьтесь, что register_setting или он не будет работать.

 add_action('admin_init', 'my_general_section'); function my_general_section() { add_settings_section( 'my_settings_section', // Section ID 'My Options Title', // Section Title 'my_section_options_callback', // Callback 'general' // What Page? This makes the section show up on the General Settings Page ); add_settings_field( // Option 1 'option_1', // Option ID 'Option 1', // Label 'my_textbox_callback', // !important - This is where the args go! 'general', // Page it will be displayed (General Settings) 'my_settings_section', // Name of our section array( // The $args 'option_1' // Should match Option ID ) ); add_settings_field( // Option 2 'option_2', // Option ID 'Option 2', // Label 'my_textbox_callback', // !important - This is where the args go! 'general', // Page it will be displayed 'my_settings_section', // Name of our section (General Settings) array( // The $args 'option_2' // Should match Option ID ) ); register_setting('general','option_1', 'esc_attr'); register_setting('general','option_2', 'esc_attr'); } function my_section_options_callback() { // Section Callback echo '<p>A little message on editing info</p>'; } function my_textbox_callback($args) { // Textbox Callback $option = get_option($args[0]); echo '<input type="text" id="'. $args[0] .'" name="'. $args[0] .'" value="' . $option . '" />'; } 

Лучше использовать плагины WordPress. Одним из лучших является расширенные пользовательские поля.

http://www.advancedcustomfields.com/

Если вы покупаете дополнительный аддон страницы, вы можете создать неограниченную страницу с множеством функций. Пожалуйста, какое видео.

http://www.advancedcustomfields.com/add-ons/options-page/

Очень полезный плагин и аддон.