Этот комментарий содержит данные, которые отображаются...

Этот комментарий содержит данные, которые отображаются на панели управления плагинами. Создание страницы в панели управления. Нам нужно выполнить два действия: создать новый пункт в меню Settings и создать форму с настройками плагина. Начнём с создания формы.

<?php function ec_settings_page() {  //получаем список категорий  $categories = get_categories(array(‘hide_empty’ => false)); ?> <div class=”wrap”>  <h2>Exclude Category Plugin Settings</h2>  <form method=”post” action=”options. php”>  <?php  //Необходимо для автоматической обработки формы  settings_fields( ‘ec-settings-group’ );  ?>  <table class=”form-table”>  <tbody>  <tr valign=”top”>  <th scope=”row”>Выберите категории, которые нужно исключить</th>  <td>  <fieldset>  <legend class=”screen-reader-text”><span>Выберите категории, которые нужно исключить</span></legend>  <?php  //читаем значение текущее опции  $curCL = get_option(‘cats_list’);  foreach ($categories as $category) {  $checked = ”;  if (is_array($curCL) && in_array($category->cat_ID, $curCL)) {  $checked = ‘checked=”checked”‘;  }  echo ‘<label><input ‘.$checked.’ type=”checkbox” name=”cats_list[]” value=”‘.$category->cat_ID.’” /> ‘.$category->name.’</label><br />’;  }  ?>  </fieldset>  </td>  </tr>  <tr valign=”top”>  <th scope=”row”>Не выводить выбранные категории</th>  <td>  <fieldset>  <legend class=”screen-reader-text”><span>Не выводить выбранные категории</span></legend>  <?php  $curCH = get_option(‘cats_home’);  $cH = $cF = ”;  if (is_array($curCH)) {  $cH = in_array(‘home’, $curCH) ? ‘checked=”checked”‘ : ”;  $cF = in_array(‘feed’, $curCH) ? ‘checked=”checked”‘ : ”;  }  ?>  <label><input type=”checkbox” <?php echo $cH; ?> name=”cats_home[]” value=”home” /> на главной</label><br />  <label><input type=”checkbox” <?php echo $cF; ?> name=”cats_home[]” value=”feed” /> в RSS ленте</label>  </fieldset>  </td>  </tr>  </tbody>  </table>  <p class=”submit”><input type=”submit” class=”button-primary” value=”Сохранить” /></p>  </form> </div>   <?php } ?> * This source code was highlighted with Source Code Highlighter.

Получилась она довольно объёмной, но в основном из-за разметки. Кода совсем немного. С разметкой формы ситуация следующая. По большому счёту, она может быть любой. Но, если вы хотите, чтобы ваша страница с настройками выглядела так же, как и остальная часть админки, то, нужно просто копировать их разметку со страниц с похожими формами. Что я и сделал. Перед отображением формы мы получаем список всех постов с помощью функции get_categories. Внутри формы создаём группу чекбоксов для них. Атрибут name у этой группы имеет значение cats_list[].

Этот комментарий содержит данные, которые отображаются...

Вторая группа чекбоксов позволяет указать, откуда нужно исключить записи. У неё атрибут name равен cats_home[]. Теперь обратите внимание на функцию settings_fields(‘ec-settings-group’), которую мы вызываем сразу после открытия формы. Она создаёт несколько скрытых полей, с помощью которых автоматически выполняется сохранение данных, введённых в форму. Но для того, чтобы эта возможность заработала необходимо зарегистрировать оба наших набора чекбоксов.

Понравилась статья? Получай обновления и будь всегда в курсе событий!
Подпишись на RSS или
blog comments powered by Disqus