Поддержка Плагины Плагин кастомных стилей в 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» закрыта для новых ответов.