ID, 'address-bar-colorizer', true);
echo '';
}
/**
* Save post color code.
* @param int $post_id Post ID
*/
function address_bar_colorizer_save_post_color($post_id)
{
// Don't forget to include nonce checks!
if (isset($_POST['address-bar-colorizer-post-color'])) {
$postColorCode = $_POST['address-bar-colorizer-post-color'];
if (check_color($postColorCode)) {
// Update post meta with selected color
update_post_meta($post_id, 'address-bar-colorizer', $postColorCode);
}
}
}
add_action('wp_insert_post', 'address_bar_colorizer_save_post_color');
/**
* Creates plugin settings menu
*/
function address_bar_colorizer_menu()
{
// Creates new sub-level menu
add_submenu_page('options-general.php', 'Customizer Address Bar Colorizer', 'Address Bar Colorizer', 'administrator',
'address-bar-colorizer-settings', 'address_bar_colorizer_settings_page');
// Call register settings function
add_action('admin_init', 'address_bar_colorizer_menu_register_settings');
}
add_action('admin_menu', 'address_bar_colorizer_menu');
/**
* Caller function for settings html page
*/
function address_bar_colorizer_settings_page()
{
include 'settings.html';
}
/**
* Register settings for plugin
*/
function address_bar_colorizer_menu_register_settings()
{
register_setting('address-bar-colorizer-settings-group', 'address-bar-colorizer-default-color', 'validate_color');
register_setting('address-bar-colorizer-settings-group', 'address-bar-colorizer-sitewide-enabled');
}
/**
* Include color picker for settings page and post editor
*/
function address_bar_colorizer_color_picker($hook_suffix)
{
// Load the color picker script only on setting page and post page
if ($hook_suffix === 'post.php' || $hook_suffix === 'settings_page_address-bar-colorizer-settings') {
wp_enqueue_style('wp-color-picker');
wp_enqueue_script('address-bar-colorizer-script', plugins_url('color-picker-helper.js', __FILE__),
array('wp-color-picker'), false, true);
}
}
add_action('admin_enqueue_scripts', 'address_bar_colorizer_color_picker');
/**
* Validate color selected by user from settings page
*/
function validate_color($colorCode)
{
if (check_color($colorCode)) {
// Return color code entered by user
return $colorCode;
} else {
// Throw an error message and revert to previous colour selected by user
add_settings_error('address-bar-colorizer-settings-group', 'address-bar-colorizer',
'Invalid value entered. Please enter a valid 6 digit hexa code.', 'error');
return get_option('address-bar-colorizer-default-color');
}
}
/**
* Checks if value is a valid 6 digit HEX color.
*/
function check_color($value)
{
if (preg_match('/^#[a-f0-9]{6}$/i', $value)) {
return true;
}
return false;
}
/**
* Add meta to head of website.
*/
function address_bar_colorizer_add_meta_head()
{
$sitewideColorEnabled = get_option('address-bar-colorizer-sitewide-enabled');
if ($sitewideColorEnabled == 1) {
// Sitewide color is enabled. Override every other setting
$defaultColorCode = get_option('address-bar-colorizer-default-color');
if ($defaultColorCode == '') {
// This indicates plugin isn't initialized for homepage
// Do nothing. Output nothing to header
return;
} else {
$output = '';
}
} else {
// Respect individual post color codes
if (is_front_page()) {
// Output homepage color
$defaultColorCode = get_option('address-bar-colorizer-default-color');
if ($defaultColorCode == '') {
// This indicates plugin isn't initialized for homepage
// Do nothing. Output nothing to header
return;
} else {
$output = '';
}
} else if (is_single()) {
// Output single post color
$postColorCode = get_post_meta(get_the_ID(), 'address-bar-colorizer', true);
if ($postColorCode == '') {
// This indicates plugin isn't initialized for current post
// Do nothing. Output nothing to header
return;
} else {
$output = '';
}
} else {
return;
}
}
// // For debugging purpose only
// $startPluginComment = "\n\n\n\n";
// $endPluginComment = "\n\n\n\n\n";
//
// echo $startPluginComment . $output . $endPluginComment;
echo $output;
}
add_action('wp_head', 'address_bar_colorizer_add_meta_head');