Этот комментарий содержит данные, которые отображаются на панели управления плагинами. Создание страницы в панели управления. Нам нужно выполнить два действия: создать новый пункт в меню 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’), которую мы вызываем сразу после открытия формы. Она создаёт несколько скрытых полей, с помощью которых автоматически выполняется сохранение данных, введённых в форму. Но для того, чтобы эта возможность заработала необходимо зарегистрировать оба наших набора чекбоксов.