Intereting Posts
Я хочу создать сайт Weebly и показать его как статические страницы на сайте WordPress Установка темы на localhost, Ubuntu 16.04 не удается найти страницу обработчика действий cforms Использование SRCSET с изображениями и избранными изображениями Как сделать мой плагин обновленным с панели администратора? как изменить значок по умолчанию пользовательского плагина? Изменить запрос даты по URL-параметру с помощью pre_get_posts и $ _GET Как получить доступ к меню, создаваемому с помощью панели инструментов> Внешний вид> Меню Перечислите пользовательскую таксономию, специфичную для одного типа пользовательских сообщений. Ошибка get_posts с пользовательской таксономией и отношением OR Как использовать живые изображения при локальной установке? Соберите одинаковые значения полей в одном значении в теге select с помощью wp_query esc перед сохранением или перед отображением имеет значение? Как получить идентификатор категории (уродские постоянные ссылки) в моем меню суб-навигации? Добавление якорей в меню WordPress

Два способа создания страниц WordPress

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

Я видел много тем, которые использовали массивы для создания страниц с параметрами, и это выглядело так:

$options = array ( array( "name" => "Welcome Message", "type" => "title"), array( "type" => "open"), array( "name" => "Title", "desc" => "Enter a title to display for your welcome message.", "id" => $shortname."_welcome_title", "std" => "", "type" => "text"), ); 

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

С другой стороны, есть «статические» страницы параметров из Codex ( http://codex.wordpress.org/Creating_Options_Pages ).

Они похожи:

 <form method="post" action="options.php"> <?php settings_fields( 'baw-settings-group' ); ?> <?php do_settings( 'baw-settings-group' ); ?> <table class="form-table"> <tr valign="top"> <th scope="row">New Option Name</th> <td><input type="text" name="new_option_name" value="<?php echo get_option('new_option_name'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Some Other Option</th> <td><input type="text" name="some_other_option" value="<?php echo get_option('some_other_option'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Options, Etc.</th> <td><input type="text" name="option_etc" value="<?php echo get_option('option_etc'); ?>" /></td> </tr> </table> <p class="submit"> <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /> </p> </form> 

Каковы преимущества и недостатки этих подходов и какие из них мне следует использовать /?

Я настоятельно рекомендую следовать рекомендациям « Обзор темы» для «Настройки темы» и «Безопасность данных» . (Если вы намерены разместить свою тему в репозитории WPORG, вам необходимо будет следовать этим рекомендациям.

Вот краткое резюме:

  • Темы необходимы для префикса всех параметров, пользовательских функций, настраиваемых переменных и пользовательских констант с помощью темы-slug (или соответствующего варианта).
  • Тема обязательна для настройки страниц параметров темы и параметров темы намеренно, вместо того, чтобы полагаться на сценарии копирования и вставки из учебников веб-сайтов.
  • Темы должны использовать функцию add_theme_page (), чтобы добавить страницу параметров темы в меню «Внешний вид», вместо использования add_menu_page (), чтобы добавить меню верхнего уровня.
  • Темы должны использовать функцию edit_theme_options для add_theme_page (), а не полагаться на роль (например, «администратор») или другую возможность (например, «edit_themes», «manage_options») для возможности добавления страницы настроек.
  • Темы необходимы для сохранения параметров в одном массиве, а не для создания нескольких параметров для страницы настроек. Использование set_theme_mod и get_theme_mod обрабатывает это для вас, также как и с помощью API настроек.
  • Для флажков и опций выбора Темы должны использовать функции checked () и selected () для вывода check checked = "checked" и selected = "selected", соответственно.
  • Темы должны проверять и дезинфицировать все ненадежные данные перед вводом данных в базу данных и избегать всех недоверенных данных перед их выходом в поля формы «Настройки» или в файлах шаблона темы (см. «Проверка данных»)
  • Темы должны использовать esc_attr () для текстовых входов и esc_html () (или esc_textarea () в WP 3.1) для текстовых полей.
  • Темы должны предоставлять явные проверки параметров без параметров, если не использовать API настроек (см .: WordPress Nonces)
  • Темы рекомендуется использовать API настроек для получения и сохранения входных данных формы, а не напрямую использовать данные $ _POST и $ _REQUEST.

Рекомендации

  • Включение API настроек в WordPress Themes (по-настоящему)
  • Учебник по настройкам API WordPress (Отто)
  • Пример страницы параметров темы WordPress (Ian Stewart)

РЕДАКТИРОВАТЬ

Итак, чтобы уточнить: вам не нужно выбирать ни / или здесь. API настроек может одновременно обрабатывать оба подхода – и на самом деле делает это довольно элегантно.

add_settings_field() может генерироваться динамически и может использовать один обратный вызов с переключателем для вывода разметки поля типа поля. Вот как я его реализую .