Improper use of admin_body_class filter
-
Hi
I was debugging a site for a customer of ours who also uses the WP-CRM plugin when I found a problem in how your plugin handles the admin_body_class filter.
In this file: ~/wp-content/plugins/wp-crm/core/class_core.php
This line:
add_filter( "admin_body_class", create_function( '', "return WP_CRM_Core::admin_body_class(); " ) );
Should be changed to:
add_filter( "admin_body_class", array( 'WP_CRM_Core', 'admin_body_class' ) );
And your
admin_body_class()
method should return$classes
regardless if it’s empty or not. It should not do a conditional return. Also, theadmin_body_class()
method should accept$classes
as an argument.This code:
static function admin_body_class() { global $current_screen, $wp_crm_user, $current_user; switch ( $current_screen->id ) { case 'toplevel_page_wp_crm': case 'crm_page_wp_crm_settings': $classes[ ] = 'wp_crm'; break; case 'crm_page_wp_crm_add_new': $classes[ ] = 'wp_crm'; if ( $wp_crm_user ) { if ( $current_user->data->ID == $wp_crm_user[ 'ID' ][ 'default' ][ 0 ] ) { $classes[ ] = 'wp_crm_my_profile'; } $classes[ ] = 'wp_crm_existing_user'; } else { $classes[ ] = 'wp_crm_new_user'; } break; } if ( !empty( $classes ) && is_array( $classes ) ) { return implode( ' ', $classes ); } }
Should be changed to this:
static function admin_body_class( $classes ) { global $current_screen, $wp_crm_user, $current_user; switch ( $current_screen->id ) { case 'toplevel_page_wp_crm': case 'crm_page_wp_crm_settings': $classes[] = 'wp_crm'; break; case 'crm_page_wp_crm_add_new': $classes[] = 'wp_crm'; if ( $wp_crm_user ) { if ( $current_user->data->ID == $wp_crm_user['ID']['default'][0] ) { $classes[] = 'wp_crm_my_profile'; } $classes[] = 'wp_crm_existing_user'; } else { $classes[] = 'wp_crm_new_user'; } break; } return $classes; }
I hope this helps!
Thanks,
Eric
Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
- The topic ‘Improper use of admin_body_class filter’ is closed to new replies.