Плагин кастомных стилей в WordPress
-
Я пытаюсь создать плагин в WordPress. Помоги пожалуйста. Этот плагин будет по клику менять цвет админбара, боковой панели и body в админке WordPress. Затем по нажатию «submit» сохранять вывод новых стилей.
Также как это реализовано в разделе «Профиль», где можно менять тему Wp.
Я сделал страницу настроек в плагине и добавил Ajax код смены стилей
(Классы зарегестрированны и выбранные кнопки остаются выбранными после нажатия Submit, но стили не сохраняются так как я использую событие click). Подскажи пожалуйста как лучше сделать.Код плагина
<?php /** * Plugin Name: Custom admin style * Plugin URI: * Description: Плагин для изменения стилей панели администратора * Version: 1.0.0 * Author: Максим * Author URI: * License: GPL-2.0+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt * Domain Path: /languages */ // If this file is called directly, abort. if ( ! defined( 'WPINC' ) ) { die; } // Код смены стилей админки add_action( 'wp_ajax_hello', 'say_hello' ); add_action( 'admin_print_footer_scripts', 'my_action_javascript', 99 ); function my_action_javascript() { ?> <script type="text/javascript"> jQuery(document).ready(function ($) { var data = { action: 'hello', name: 'Дмитрий' }; jQuery.get(ajaxurl, data, function (response) { $('#my_radio_1').click(function () { $('#wpadminbar').css('background-color', '#72aee6'); }); $('#my_radio_2').click(function () { $('#wpadminbar').css('background-color', '#f41150'); }); $('#my_radio_3').click(function () { $('#wpadminbar').css('background-color', '#74f54a'); }); }); }); </script> <?php } // Страница настроек $true_page = 'myparameters.php'; // это часть URL страницы, рекомендую использовать строковое значение, т.к. в данном случае не будет зависимости от того, в какой файл вы всё это вставите /* * Функция, добавляющая страницу в пункт меню Настройки */ function true_options() { global $true_page; add_menu_page( 'Custom admin style', 'Custom admin style', 'manage_options', $true_page, 'true_option_page'); } add_action('admin_menu', 'true_options'); /** * Возвратная функция (Callback) */ function true_option_page(){ global $true_page; ?><div class="wrap"> <h2>Дополнительные параметры сайта</h2> <form method="post" enctype="multipart/form-data" action="options.php"> <?php settings_fields('true_options'); // меняем под себя только здесь (название настроек) do_settings_sections($true_page); ?> <p class="submit"> <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /> </p> </form> </div><?php } /* * Регистрируем настройки */ function true_option_settings() { global $true_page; // Присваиваем функцию валидации ( true_validate_settings() ). Вы найдете её ниже register_setting( 'true_options', 'true_options', 'true_validate_settings' ); // true_options // Добавляем секцию add_settings_section( 'true_section_1', 'Выберите цвет', '', $true_page ); // Создадим радио-кнопку $true_field_params = array( 'type' => 'radio', 'id' => 'my_radio', 'vals' => array( 'val1' => 'Значение 1', 'val2' => 'Значение 2', 'val3' => 'Значение 3') ); add_settings_field( 'my_radio', 'Радио кнопки', 'true_option_display_settings', $true_page, 'true_section_1', $true_field_params ); } add_action( 'admin_init', 'true_option_settings' ); /* * Функция отображения полей ввода * Здесь задаётся HTML и PHP, выводящий поля */ function true_option_display_settings($args) { extract( $args ); $option_name = 'true_options'; $o = get_option( $option_name ); switch ( $type ) { case 'radio': echo "<fieldset>"; $odin = 0; foreach($vals as $v=>$l){ $odin = $odin+1; $checked = ($o[$id] == $v) ? "checked='checked'" : ''; // добавляю уникальный id каждой кнопке echo "<label><input id='my_radio_$odin' type='radio' name='" . $option_name . "[$id]' value='$v' $checked />$l</label><br />"; } echo "</fieldset>"; break; } } /* * Функция проверки правильности вводимых полей */ function true_validate_settings($input) { foreach($input as $k => $v) { $valid_input[$k] = trim($v); /* Вы можете включить в эту функцию различные проверки значений, например if(! задаем условие ) { // если не выполняется $valid_input[$k] = ''; // тогда присваиваем значению пустую строку } */ } return $valid_input; }
- Тема «Плагин кастомных стилей в WordPress» закрыта для новых ответов.