Как создать страницу настроек для темы в WordPress?
Мне нужно что бы в админке темы WordPress появилась страница настроек.
Где пользователь будет вводить скажем свой e-mail и он выводился в определенном
месте страниц блога.
В файле functions.php или в отдельном php файле (который должен быть подключен к functions.php «include(‘functions/settings.php’);») нужно вставить следующий код:
class ControlPanel { // Устанавливаем значения по умолчанию var $default_settings = array( 'email' => 'info@site.ru' ); var $options; function ControlPanel() { add_action('admin_menu', array(&$this, 'add_menu')); if (!is_array(get_option('themadmin'))) add_option('themadmin', $this->default_settings); $this->options = get_option('themadmin'); } function add_menu() { add_theme_page('WP Theme Options', 'Опции темы', 8, "themadmin", array(&$this, 'optionsmenu')); } // Сохраняем значения формы с настройками function optionsmenu() { if ($_POST['ss_action'] == 'save') { $this->options["phone"] = $_POST['cp_phone']; $this->options["email"] = $_POST['cp_email']; $this->options["metrika"] = $_POST['cp_metrika']; update_option('themadmin', $this->options); echo '<div class="updated fade" id="message" style="background-color: rgb(255, 251, 204); width: 400px; margin-left: 17px; margin-top: 17px;"> <p>Ваши изменения <strong>сохранены</strong>.</p></div>'; } // Создаем форму для настроек echo '<form action="" method="post" class="themeform">'; echo '<input type="hidden" id="ss_action" name="ss_action" value="save">'; print '<div class="cptab"> <br /> <b>Настройки темы</b> <br /> <h3>Контакты</h3> <p><input placeholder="Телефон" style="width:300px;" name="cp_phone" id="cp_phone" value="'.$this->options["phone"].'"> <label> - телефон</label></p> <p><input placeholder="Email" style="width:300px;" name="cp_email" id="cp_email" value="'.$this->options["email"].'"> <label> - email</label></p> <h3>Код в footer.php</h3> <p><textarea placeholder="Здесь можно прописать коды счетчиков или дополнительных скриптов" style="width:300px;" name="cp_metrika" id="cp_metrika">'.stripslashes($this->options["metrika"]).'</textarea><label> - здесь можно прописать коды счетчиков или дополнительных скриптов</label></p> </div><br />'; echo '<input type="submit" value="Сохранить" name="cp_save" class="dochanges" />'; echo '</form>'; } } $cpanel = new ControlPanel(); $myoptions = get_option('themadmin');
В этот код вы можете добавлять свои поля по аналогии, можете красиво оформить страницу настроек и т.д. Страницу настроек вы увидите в админке на вкладке «Внешний вид», называется она «Опции темы».
Для того что бы выводить введенные данные в «Опции темы» вам нужно на странице блога объявить глобальную переменную <?php global $mytheme; ?> (проще всего объявить её в header.php и забыть про неё). И затем в том месте где нужно вывести введенные данные вставляете переменную, например <?php echo $mytheme[‘phone’]; ?> или <?php echo $mytheme[’email’]; ?>