wordpress: body_class producing “home” class on custom url

The plugin I’m writng adds a custom url and handles it with a custom template using this:

public function url_for_calendar() {
    add_rewrite_rule( 'calendario', 'index.php?upcoming-events=true', 'top' );
}

public function template_for_calendar( $path ) {
    if ( get_query_var( 'upcoming-events' ) ) {
        $template = get_template_directory() . '/upcoming-events.php';

        return $template;
    }

    return $path;
}

public function upcoming_event_query_var( $vars ) {
    $vars[] = 'upcoming-events';

    return $vars;
}

add_action( 'init', array( $this, 'url_for_calendar' ) );
add_filter( 'template_include', array( $this, 'template_for_calendar' ) );
add_filter( 'query_vars', array( $this, 'upcoming_event_query_var' ) );

Things go as planned, but the problem I’m having is that on my header, where I have:

Read More
<body <?php body_class(); ?>>

body_class() ends up adding “home” to the list of classes. I read the docs for “is_home” and for “body_class”, but I still don’t understand why would it add the “home” class to this particular URL. Should I remove it (and add pertinent classes) with the body_class filter, or is there a better practice to accomplish this?

Using WP 4.1.

Related posts

Leave a Reply

1 comment

  1. Actually, is_home() adds the class “blog”.

    The class “home” is added for the front page (is_front_page()).

    If the settings are configured for a static front page and this code is run there, then you will get “home” as a body class.