Я собираюсь создать свои собственные страницы параметров для моей темы 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, вам необходимо будет следовать этим рекомендациям.
Вот краткое резюме:
Итак, чтобы уточнить: вам не нужно выбирать ни / или здесь. API настроек может одновременно обрабатывать оба подхода – и на самом деле делает это довольно элегантно.
add_settings_field()
может генерироваться динамически и может использовать один обратный вызов с переключателем для вывода разметки поля типа поля. Вот как я его реализую .