J'ai la fonction suivante dans un plugin que j'ai construit:
static function filter_add_body_classes( $body_classes ) {
$new_classes = array();
// Only when logged in
if ( ! is_user_logged_in() ) {
return $body_classes;
}
// If viewing the site
if ( ! is_admin() ) {
$new_classes[] = 'sat-site';
}
// If theming is enabled
if ( Skizzar_Admin_Theme::is_themed() ) {
$new_classes[] = 'sat-theme';
}
// If a custom logo image is provided and the menu logo hiding option is not enabled
if ( Skizzar_Admin_Theme_Options::get_saved_network_option( 'logo-image' ) && ! Skizzar_Admin_Theme_Options::get_saved_network_option( 'hide-menu-logo' ) ) {
$new_classes[] = 'sat-custom-logo';
}
// If hide-top-paging option is enabled
if ( Skizzar_Admin_Theme_Options::get_saved_network_option( 'hide-top-paging' ) ) {
$new_classes[] = 'sat-hide-top-paging';
}
// If hide-post-search option is enabled
if ( Skizzar_Admin_Theme_Options::get_saved_network_option( 'hide-post-search' ) ) {
$new_classes[] = 'sat-hide-post-search';
}
// If hide-top-bulk option is enabled
if ( Skizzar_Admin_Theme_Options::get_saved_network_option( 'hide-top-bulk' ) ) {
$new_classes[] = 'sat-hide-top-bulk';
}
// If hide-user-role-changer
if ( Skizzar_Admin_Theme_Options::get_saved_network_option( 'hide-user-role-changer' ) ) {
$new_classes[] = 'sat-hide-user-role-changer';
}
// If hide-view-switch option is enabled
if ( Skizzar_Admin_Theme_Options::get_saved_network_option( 'hide-view-switch' ) ) {
$new_classes[] = 'sat-hide-view-switch';
}
// If hide-media-bulk-select option is enabled
if ( Skizzar_Admin_Theme_Options::get_saved_network_option( 'hide-media-bulk-select' ) ) {
$new_classes[] = 'sat-hide-media-bulk-select';
}
// If hide-comment-type-filter option is enabled
if ( Skizzar_Admin_Theme_Options::get_saved_network_option( 'hide-comment-type-filter' ) ) {
$new_classes[] = 'sat-hide-comment-type-filter';
}
// If enable-notification-center option is enabled
if ( Skizzar_Admin_Theme_Options::get_saved_network_option( 'enable-notification-center' ) ) {
$new_classes[] = 'sat-notification-center';
}
// Merge & return
if ( is_array( $body_classes ) ) {
return array_merge( $body_classes, $new_classes );
}
return $body_classes . ' ' . implode( ' ', $new_classes ) . ' ';
}
Dans mon fichier de plugin principal, je l’appelle à 3 endroits en utilisant les filtres suivants:
add_filter( 'body_class', array( 'Skizzar_Admin_Theme_Setup', 'filter_add_body_classes' ) );
add_filter( 'admin_body_class', array( 'Skizzar_Admin_Theme_Setup', 'filter_add_body_classes' ));
add_filter( 'login_body_class', array( 'Skizzar_Admin_Theme_Setup', 'filter_add_body_classes' ) );
Cela devrait ajouter des classes au corps en fonction des options choisies par les utilisateurs pour leur plugin. Les classes doivent être ajoutées au corps de l'administrateur , au site et au page de connexion . Cependant, pour le moment, cela ne fait qu'ajouter au site - donc, admin_body_class
et login_body_class
ne font essentiellement rien.
Quelqu'un peut-il m'aider à résoudre ce problème - ne pas avoir d'erreurs, mais ne rien faire
A propos de votre problème dans classe de corps d'administrateur , WP documentation Codex admin_body_class
, class En tant que chaîne (pas de tableau), certaines de vos fonctions, comme get_saved_network_option
, ne retournent pas true, car $new_classes
n'est pas défini dans array.
Ce code correct, nous avons besoin de retourner dans la chaîne, mais $new_classes
peut-être dans la chaîne vide ou non tableau.
return $body_classes . ' ' . implode( ' ', $new_classes ) . ' ';
Pour la classe de page de connexion , vous avez le droit de définir login_body_class
dans un tableau, MAIS vous avez défini la condition trop tôt. comme commentaire de @Bruno Cantuaria, regardez votre code:
// Only when logged in
if ( ! is_user_logged_in() ) {
return $body_classes;
}
C’est pourquoi les paramètres de classe ne sont pas renvoyés, cela ne fonctionne que si l’utilisateur n’est pas connecté. J'espère que ça aide.