A plugin that changes the CSS based on option
Question
I’ve been trying to make a plugin (I’m new to PHP) to change the colors of my child theme CSS based on a option in the option page of my plugin, after searching and testing/trying to make it work for hours I’m afraid I have no idea how to continue.
Here’s is my entire PHP file.
<?php
/**
* Plugin Name: Seizoens kleuren
* Plugin URI: https://www.burobrein.nl
* Description: Een plugin om de kleuren te veranderen van de site.
* Version: 1.0
* Author: BuroBrein
* Author URI: https://www.burobrein.nl
*/
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()
{
switch($_POST['seizoens_kleuren_options['seizoen_0']']){
case 'zomer':
// insert css/zomer.css
break;
case 'herfst':
// insert css/herfst.css
break;
case 'winter':
// insert css/winter.css
break;
case 'lente':
// insert css/lente.css
break;
default:
}
}
add_action('wp_enqueue_style', 'seizoenplugin_enqueue_styles' );
?>
0
4 months
0 Answers
16 views
0
Leave an answer
You must login or register to add a new answer .