最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

customization - Changing the CSS with a plugin

programmeradmin3浏览0评论

I'm trying to make a plugin that changes the CSS file. My client want to change the colors each season, and we want to make it foolproof so they won't break anything.

I've managed to create the option page but I can't seem to get the actual function to work.

<?php
class SeizoensKleuren {
    private $seizoens_kleuren_options;

    public function __construct() {
        add_action( 'admin_menu', array( $this, 'seizoens_kleuren_add_plugin_page' ) );
        add_action( 'admin_init', array( $this, 'seizoens_kleuren_page_init' ) );
    }

    public function seizoens_kleuren_add_plugin_page() {
        add_menu_page(
            'Seizoens kleuren', // page_title
            'Seizoens kleuren', // menu_title
            'manage_options', // capability
            'seizoens-kleuren', // menu_slug
            array( $this, 'seizoens_kleuren_create_admin_page' ), // function
            'dashicons-admin-appearance', // icon_url
            81 // position
        );
    }

    public function seizoens_kleuren_create_admin_page() {
        $this->seizoens_kleuren_options = get_option( 'seizoens_kleuren_option_name' ); ?>

        <div class="wrap">
            <h2>Seizoens kleuren</h2>
            <p>Verander hier de kleuren van de site n.a.v. het seizoen!</p>
            <?php settings_errors(); ?>

            <form method="post" action="options.php">
                <?php
                    settings_fields( 'seizoens_kleuren_option_group' );
                    do_settings_sections( 'seizoens-kleuren-admin' );
                    submit_button();
                ?>
            </form>
        </div>
    <?php }

    public function seizoens_kleuren_page_init() {
        register_setting(
            'seizoens_kleuren_option_group', // option_group
            'seizoens_kleuren_option_name', // option_name
            array( $this, 'seizoens_kleuren_sanitize' ) // sanitize_callback
        );

        add_settings_section(
            'seizoens_kleuren_setting_section', // id
            'Settings', // title
            array( $this, 'seizoens_kleuren_section_info' ), // callback
            'seizoens-kleuren-admin' // page
        );

        add_settings_field(
            'seizoen_0', // id
            'Seizoen:', // title
            array( $this, 'seizoen_0_callback' ), // callback
            'seizoens-kleuren-admin', // page
            'seizoens_kleuren_setting_section' // section
        );
    }

    public function seizoens_kleuren_sanitize($input) {
        $sanitary_values = array();
        if ( isset( $input['seizoen_0'] ) ) {
            $sanitary_values['seizoen_0'] = $input['seizoen_0'];
        }

        return $sanitary_values;
    }

    public function seizoens_kleuren_section_info() {
        
    }

    public function seizoen_0_callback() {
        ?> <select name="seizoens_kleuren_option_name[seizoen_0]" id="seizoen_0">
            <?php $selected = (isset( $this->seizoens_kleuren_options['seizoen_0'] ) && $this->seizoens_kleuren_options['seizoen_0'] === 'lente') ? 'selected' : '' ; ?>
            <option value="lente" <?php echo $selected; ?>>Lente</option>
            <?php $selected = (isset( $this->seizoens_kleuren_options['seizoen_0'] ) && $this->seizoens_kleuren_options['seizoen_0'] === 'zomer') ? 'selected' : '' ; ?>
            <option value="zomer" <?php echo $selected; ?>>Zomer</option>
            <?php $selected = (isset( $this->seizoens_kleuren_options['seizoen_0'] ) && $this->seizoens_kleuren_options['seizoen_0'] === 'herfst') ? 'selected' : '' ; ?>
            <option value="herfst" <?php echo $selected; ?>>Herfst</option>
            <?php $selected = (isset( $this->seizoens_kleuren_options['seizoen_0'] ) && $this->seizoens_kleuren_options['seizoen_0'] === 'winter') ? 'selected' : '' ; ?>
            <option value="winter" <?php echo $selected; ?>>Winter</option>
        </select> <?php
    }

}
if ( is_admin() )
    $seizoens_kleuren = new SeizoensKleuren();

/* 
 * Retrieve this value with:
 * $seizoens_kleuren_options = get_option( 'seizoens_kleuren_option_name' ); // Array of All Options
 * $seizoen_0 = $seizoens_kleuren_options['seizoen_0']; // Seizoen:
 */

function seizoenplugin_enqueue_styles() 
{
    // Get the user's stylesheet choice from the options, default to "lente"
    $seizoens_kleuren_options = get_option( 'lente');

    // Conditionally load the appropriate stylesheet
    if( $seizoens_kleuren_options == 'lente' ) {
        wp_enqueue_style( 'seizoenplugin-lente', plugins_url( '/css/lente.css', __FILE__ ) );
    } elseif( $seizoens_kleuren_options == 'zomer') {
        wp_enqueue_style( 'seizoenplugin-zomer', plugins_url( '/css/zomer.css', __FILE__ ) );
    } elseif( $seizoens_kleuren_options == 'herfst') {
      wp_enqueue_style( 'seizoenplugin-herfst', plugins_url( '/css/herfst.css', __FILE__ ) );
    } elseif( $seizoens_kleuren_options == 'winter') {
    wp_enqueue_style( 'seizoenplugin-winter', plugins_url( '/css/winter.css', __FILE__ ) );
  }
}

add_action('admin_enqueue_scripts', 'seizoenplugin_enqueue_styles' );

  
  ?>

Any help would be greatly appreciated :). Cheers!

I'm trying to make a plugin that changes the CSS file. My client want to change the colors each season, and we want to make it foolproof so they won't break anything.

I've managed to create the option page but I can't seem to get the actual function to work.

<?php
class SeizoensKleuren {
    private $seizoens_kleuren_options;

    public function __construct() {
        add_action( 'admin_menu', array( $this, 'seizoens_kleuren_add_plugin_page' ) );
        add_action( 'admin_init', array( $this, 'seizoens_kleuren_page_init' ) );
    }

    public function seizoens_kleuren_add_plugin_page() {
        add_menu_page(
            'Seizoens kleuren', // page_title
            'Seizoens kleuren', // menu_title
            'manage_options', // capability
            'seizoens-kleuren', // menu_slug
            array( $this, 'seizoens_kleuren_create_admin_page' ), // function
            'dashicons-admin-appearance', // icon_url
            81 // position
        );
    }

    public function seizoens_kleuren_create_admin_page() {
        $this->seizoens_kleuren_options = get_option( 'seizoens_kleuren_option_name' ); ?>

        <div class="wrap">
            <h2>Seizoens kleuren</h2>
            <p>Verander hier de kleuren van de site n.a.v. het seizoen!</p>
            <?php settings_errors(); ?>

            <form method="post" action="options.php">
                <?php
                    settings_fields( 'seizoens_kleuren_option_group' );
                    do_settings_sections( 'seizoens-kleuren-admin' );
                    submit_button();
                ?>
            </form>
        </div>
    <?php }

    public function seizoens_kleuren_page_init() {
        register_setting(
            'seizoens_kleuren_option_group', // option_group
            'seizoens_kleuren_option_name', // option_name
            array( $this, 'seizoens_kleuren_sanitize' ) // sanitize_callback
        );

        add_settings_section(
            'seizoens_kleuren_setting_section', // id
            'Settings', // title
            array( $this, 'seizoens_kleuren_section_info' ), // callback
            'seizoens-kleuren-admin' // page
        );

        add_settings_field(
            'seizoen_0', // id
            'Seizoen:', // title
            array( $this, 'seizoen_0_callback' ), // callback
            'seizoens-kleuren-admin', // page
            'seizoens_kleuren_setting_section' // section
        );
    }

    public function seizoens_kleuren_sanitize($input) {
        $sanitary_values = array();
        if ( isset( $input['seizoen_0'] ) ) {
            $sanitary_values['seizoen_0'] = $input['seizoen_0'];
        }

        return $sanitary_values;
    }

    public function seizoens_kleuren_section_info() {
        
    }

    public function seizoen_0_callback() {
        ?> <select name="seizoens_kleuren_option_name[seizoen_0]" id="seizoen_0">
            <?php $selected = (isset( $this->seizoens_kleuren_options['seizoen_0'] ) && $this->seizoens_kleuren_options['seizoen_0'] === 'lente') ? 'selected' : '' ; ?>
            <option value="lente" <?php echo $selected; ?>>Lente</option>
            <?php $selected = (isset( $this->seizoens_kleuren_options['seizoen_0'] ) && $this->seizoens_kleuren_options['seizoen_0'] === 'zomer') ? 'selected' : '' ; ?>
            <option value="zomer" <?php echo $selected; ?>>Zomer</option>
            <?php $selected = (isset( $this->seizoens_kleuren_options['seizoen_0'] ) && $this->seizoens_kleuren_options['seizoen_0'] === 'herfst') ? 'selected' : '' ; ?>
            <option value="herfst" <?php echo $selected; ?>>Herfst</option>
            <?php $selected = (isset( $this->seizoens_kleuren_options['seizoen_0'] ) && $this->seizoens_kleuren_options['seizoen_0'] === 'winter') ? 'selected' : '' ; ?>
            <option value="winter" <?php echo $selected; ?>>Winter</option>
        </select> <?php
    }

}
if ( is_admin() )
    $seizoens_kleuren = new SeizoensKleuren();

/* 
 * Retrieve this value with:
 * $seizoens_kleuren_options = get_option( 'seizoens_kleuren_option_name' ); // Array of All Options
 * $seizoen_0 = $seizoens_kleuren_options['seizoen_0']; // Seizoen:
 */

function seizoenplugin_enqueue_styles() 
{
    // Get the user's stylesheet choice from the options, default to "lente"
    $seizoens_kleuren_options = get_option( 'lente');

    // Conditionally load the appropriate stylesheet
    if( $seizoens_kleuren_options == 'lente' ) {
        wp_enqueue_style( 'seizoenplugin-lente', plugins_url( '/css/lente.css', __FILE__ ) );
    } elseif( $seizoens_kleuren_options == 'zomer') {
        wp_enqueue_style( 'seizoenplugin-zomer', plugins_url( '/css/zomer.css', __FILE__ ) );
    } elseif( $seizoens_kleuren_options == 'herfst') {
      wp_enqueue_style( 'seizoenplugin-herfst', plugins_url( '/css/herfst.css', __FILE__ ) );
    } elseif( $seizoens_kleuren_options == 'winter') {
    wp_enqueue_style( 'seizoenplugin-winter', plugins_url( '/css/winter.css', __FILE__ ) );
  }
}

add_action('admin_enqueue_scripts', 'seizoenplugin_enqueue_styles' );

  
  ?>

Any help would be greatly appreciated :). Cheers!

Share Improve this question edited Jul 28, 2020 at 14:51 mennobrein asked Jul 28, 2020 at 12:10 mennobreinmennobrein 112 bronze badges 4
  • 1 There’s a lot of code there. What, specifically, isn’t working? – Jacob Peattie Commented Jul 28, 2020 at 12:26
  • @JacobPeattie Hi, thanks for reaching out! It's the last function: seizoenplugin_enqueue_styles. It doesn't do anything, I select the option 'Zomer' on my settings page but it doesn't enqueue the CSS located at /css/zomer.css – mennobrein Commented Jul 28, 2020 at 12:39
  • Are you trying to load the stylesheets in the admin? – Jacob Peattie Commented Jul 28, 2020 at 12:40
  • No, I'm trying to load them in the front-end. – mennobrein Commented Jul 28, 2020 at 12:45
Add a comment  | 

1 Answer 1

Reset to default 0

You're using the wrong hook to enqueue your styles:

add_action('admin_enqueue_scripts', 'seizoenplugin_enqueue_styles' );

As the name suggests, admin_enqueue_scripts is for enqueuing scripts and styles in the admin. To enqueue scripts on the front end use wp_enqueue_scripts:

add_action('wp_enqueue_scripts', 'seizoenplugin_enqueue_styles' );
发布评论

评论列表(0)

  1. 暂无评论