Skip to content

Instantly share code, notes, and snippets.

@trepmal
Last active December 10, 2018 21:08
Show Gist options
  • Save trepmal/8011501 to your computer and use it in GitHub Desktop.
Save trepmal/8011501 to your computer and use it in GitHub Desktop.
Swap the Color Scheme between regular and Network admins. For WP3.8 (and beyond, probably)
<?php
// Plugin Name: Change Network Admin Color Scheme
if ( is_multisite() ) {
add_filter( 'style_loader_src', 'cnacs_intercept_admin_color', 10, 2 );
add_action( 'admin_color_scheme_picker', 'cnacs_network_admin_color_scheme_picker');
add_action( 'personal_options_update', 'cnacs_update_network_admin_option' );
add_action( 'edit_user_profile_update', 'cnacs_update_network_admin_option' );
}
// change 'admin_color' when requested for Network Admin
function cnacs_intercept_admin_color($arg1, $arg2) {
if ( is_network_admin() ) {
add_filter('get_user_option_admin_color', 'cnacs_get_user_option_admin_color', 10, 3 );
}
return $arg1;
}
// return network color option in place of regular
function cnacs_get_user_option_admin_color( $result, $option, $user ) {
remove_filter('get_user_option_admin_color', 'cnacs_get_user_option_admin_color', 10, 3 );
$network_admin_color = get_user_meta( $user->ID, 'network_admin_color', true );
if ( empty( $network_admin_color ) ) return $result;
return $network_admin_color;
}
// attempt to add option in user-edit. it's meh.
function cnacs_network_admin_color_scheme_picker() {
global $profileuser;
if ( ! is_super_admin( $profileuser->ID ) ) return;
echo '<h3>Network Color</h3>';
add_filter('get_user_option_admin_color', 'cnacs_get_user_option_admin_color', 10, 3 );
ob_start();
admin_color_scheme_picker( $profileuser->ID );
$picker = ob_get_clean();
remove_filter('get_user_option_admin_color', 'cnacs_get_user_option_admin_color', 10, 3 );
$picker = str_replace( 'admin_color', 'network_admin_color', $picker );
echo $picker;
}
// save profile preference
function cnacs_update_network_admin_option( $user_id ) {
if ( ! isset( $_POST['network_admin_color'] ) ) return;
global $_wp_admin_css_colors;
$allowed = array_keys( $_wp_admin_css_colors );
$newcolor = in_array( $_POST['network_admin_color'], $allowed ) ? $_POST['network_admin_color'] : '';
update_user_meta( $user_id, 'network_admin_color', $_POST['network_admin_color'] );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment