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:
<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.
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.