WP 3.8 Domyślny kolor administratora dla wszystkich użytkowników

10

Jestem zaskoczony nowym schematem kolorów dla wersji 3.8 i chociaż nie ma już klasycznego motywu 3.7, chciałbym ustawić nowy schemat kolorów „Jasny” jako domyślny dla wszystkich użytkowników, ale jednocześnie pozwolić im na zmianę motyw, jeśli chcą, w swoim profilu użytkownika.

Czy ktoś zdołał wymyślić funkcję ustawiania domyślnego dla wszystkich użytkowników? Szukałem, ale nic nie mogę znaleźć, ponieważ jest to nowy kodeks 3.8, który nie jest w pełni napisany.

Sol
źródło

Odpowiedzi:

14

Możesz ustawić (pod względem siły) domyślny kolor w functions.phpnastępujący sposób:

add_filter( 'get_user_option_admin_color', 'update_user_option_admin_color', 5 );

function update_user_option_admin_color( $color_scheme ) {
    $color_scheme = 'light';

    return $color_scheme;
}

Aktualizacja: Poniższe schematy kolorów są domyślnie dostępne w wersji WP 3.8

  • świeży
  • światło
  • niebieski
  • Kawa
  • ektoplazma
  • północ
  • ocean
  • wschód słońca

Premia (znaleziona na wpmudev ): Wyłącz opcje schematu kolorów administratora, aby upewnić się, że użytkownicy nie będą mogli wrócić do innego koloru:

remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

Aktualizacja 2: jak zauważył Rarst, powyższy filtr wymusi określony schemat kolorów zamiast ustawiania zmiennego ustawienia domyślnego. Rozwiązaniem tego problemu jest uruchomienie akcji tylko raz (np. Podczas konfiguracji / rejestracji użytkownika), aby następnie użytkownik mógł sam zdecydować i zmienić kolor:

add_action( 'user_register', 'myplugin_registration_save', 10, 1 );
function myplugin_registration_save( $user_id ) {

       update_user_meta($user_id, 'admin_color', 'light');

}

Aktualizacja 3: OK, więc jeszcze raz spróbuj :)

Chodzi o to, aby dodać dodatkowe metadane użytkownika (patrz custom_admin_color_scheme), gdy tylko użytkownik zaktualizuje profil; dopóki pole nie jest ustawione na true, zmienimy domyślny schemat kolorów administratora na wybrany przez nas schemat kolorów:

// add custom user meta data
add_action('personal_options_update', 'save_custom_admin_color_optios');
function save_custom_admin_color_optios( $user_id ) {

    update_user_meta($user_id, 'custom_admin_color_scheme', true);

}

// change default color scheme if not customized
$customized_color_scheme = get_user_option( 'custom_admin_color_scheme', get_current_user_id() );
if ( empty($customized_color_scheme) ) {

    update_user_meta(get_current_user_id(), 'admin_color', 'light');

}

Aktualizacja 4: Wreszcie na wordpress.org jest też bardzo ładna wtyczka do łatwego zarządzania domyślnymi schematami kolorów administratora: Domyślny schemat kolorów administratora

Sven
źródło
2
Czy ten konkretny schemat siły nie będzie ustawiał domyślnych zmiennych?
Rarst
@Rarst Dobra uwaga! Zaktualizowałem odpowiedź i dodałem akcję, aby zmienić kolor tylko podczas instalacji; potem to zależy od użytkownika :)
Sven
W rzeczywistości - nie jest to bardzo pomocne dla użytkowników już zarejestrowanych. Nie sądzę, że istnieje sposób, aby zmusić ich do dokonania wyboru przy następnym logowaniu (to chyba dużo pracy).
Sol,
@ Sol Wystarczy sprawdzić, czy istnieje już ustawienie i czy jest to jeden ze wstępnie zdefiniowanych schematów kolorów z wersji 3.8. Jeśli teraz, po prostu exit( wp_redirect( admin_url( 'profile.php' ) ) );(nie jestem pewien profile.php) przekieruj ich do swojego profilu i dodaj admin_notice, że powinni zmienić. Zrobione w ten sposób są wymuszone, ponieważ nastąpi przekierowanie, dopóki nie zostanie wykonane to ustawienie :)
kaiser
Cześć Kaiser, brzmi idealnie. Czy potrafisz podać przykładowy kod?
Sol,