Question

I am trying to add the current custom post type term to the body class of my WordPress admin page. So when I am viewing an existing custom post type that has been assigned a term it will add that term to the body class.

I have found the following code but cannot get it to work for me:

add_filter( 'admin_body_class', 'rw_admin_body_class' );
function rw_admin_body_class( $classes )
{
    if ( 'post' != $screen->base )
        return $classes;

    global $post;
    $terms = wp_get_post_terms( $post->ID, 'product_cat', array( 'fields' => 'all' ) );
    $terms = wp_list_pluck( $terms, 'slug' );
    foreach ( $terms as $term )
    {
        $classes .= ' my_taxonomy-' . $term;
    }

    return $classes;
}

Any pointers on how to get this working?

Was it helpful?

Solution

I think you're missing get_current_screen().

add_filter( 'admin_body_class', 'rw_admin_body_class' );
function rw_admin_body_class( $classes ) {
    $screen = get_current_screen();
    if ( 'post' != $screen->base ) {
        return $classes;
    }

    global $post;
    $terms = wp_get_post_terms( $post->ID, 'product_cat', array( 'fields' => 'all' ) );
    $terms = wp_list_pluck( $terms, 'slug' );
    foreach ( $terms as $term )
    {
        $classes .= ' my_taxonomy-' . $term;
    }

    return $classes;
}

OTHER TIPS

You can add custom-classe to the your wordpress custom admin page body classes like the following

$wpdocs_admin_page = add_options_page(__('Wpdocs Admin Page', 'wpdocs_textdomain'),
    __('Wpdocs Admin Page', 'wpdocs_textdomain'),
    'manage_options', 'wpdocs_textdomain', 'wpdocs_admin_page');

add_filter( 'admin_body_class', 'rw_admin_body_class' );
function rw_admin_body_class( $classes )
{
$screen = get_current_screen();
    if ( wpdocs_admin_page == $screen->id)
        return $classes;

    global $post;
    $terms = wp_get_post_terms( $post->ID, 'product_cat', array( 'fields' => 'all' ) );
    $terms = wp_list_pluck( $terms, 'slug' );
    foreach ( $terms as $term )
    {
        $classes .= ' my_taxonomy-' . $term;
    }

    return $classes;
}
Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top