Tengo un problema bastante básico del que me sorprende que WP no tenga una solución nativa (a menos que esté pasando por alto algo, con suerte).
Tengo un sitio WP con static pageset como portada en la configuración de lectura. En un código de complemento, estoy tratando de determinar si WP está mostrando la página principal y agregar una clase a la $classesmatriz si es así. Estoy usando el siguiente código para lograrlo
add_filter('body_class', function($classes){
if(is_front_page() || is_home()){
$classes[] = 'home-page';
}
return $classes;
});
Estoy usando ambos is_front_page()y is_home()en caso de que la configuración de la página principal cambie de página estática a diseño de blog en el futuro.
El problema que encuentro es que este código agrega home-pageclase bodyincluso en la wp-signup.phppágina.
Inspeccionar el código revela que las is_front_page()llamadas WP_Query::is_front_page(), que esencialmente devuelve resultados de WP_Query::is_page(get_option('page_on_front')). Entonces, la raíz del problema es que wp-signup.phpcalifica como la página (id) devuelta por get_option('page_on_front')( que devuelve IDla página estática configurada como portada en configuración> lectura ).
WP_Query::is_page()utiliza WP_Query::get_queried_object()internamente para decidir si la página actual es la página presente en los argumentos del método. En el wp-signup.phpcaso, el código que establece el objeto consultado actual es el siguiente
/*...other code... */
elseif ( $this->is_singular && ! empty( $this->post ) ) {
$this->queried_object = $this->post;
$this->queried_object_id = (int) $this->post->ID;
}
/*...other code... */
Esto muestra que wordpress, por alguna razón, consulta la página principal para mostrar wp-signup.phpy plantea las siguientes preguntas.
- ¿Por qué
is_front_page()está devolviendo resultados incorrectos? - AFAIK
wp-signup.phpnunca se puede establecer como página de inicio utilizando la configuración de administrador de Wordpress, entonces ¿por qué el código de Wordpress no se rescata simplemente al marcarPHP_SELFoREQUEST_URI? - ¿Por qué WP_Query tiene la página de inicio actual
$this->posten este momento?
He descartado el problema de los complementos eliminando el directorio de complementos (y complementos mu). Todavía califica wp-signup.phpcomo portada donde no lo hace para ninguna otra página.
Cualquier ayuda con respecto a este tema será muy apreciada.
Actualización
Estoy usando WP verison 4.2.4 y es una configuración multisitio.
Gracias.
ifcondición:( ! isset( $GLOBALS['pagenow'] ) || $GLOBALS['pagenow'] !== 'wp-signup.php' ) && ( is_front_page() || is_home() )