Eu tenho um problema bastante básico que me surpreende que o WP não tenha uma solução nativa (a menos que eu esteja negligenciando alguma coisa, espero).
Eu tenho um site WP com static page
definido como primeira página na configuração de leitura. Em um código de plug-in, estou tentando determinar se o WP está exibindo a primeira página e adicionar uma classe à $classes
matriz, se for verdade. Estou usando o seguinte código para realizá-lo
add_filter('body_class', function($classes){
if(is_front_page() || is_home()){
$classes[] = 'home-page';
}
return $classes;
});
Estou usando os dois is_front_page()
e is_home()
, caso a configuração da primeira página mude da página estática para o layout do blog no futuro.
O problema que encontro é que esse código adiciona home-page
classe ao body
mesmo na wp-signup.php
página.
A inspeção do código revela as is_front_page()
chamadas WP_Query::is_front_page()
, que essencialmente retornam resultados de WP_Query::is_page(get_option('page_on_front'))
. Portanto, a raiz do problema é wp-signup.php
qualificada como a página (ID) retornada por get_option('page_on_front')
( que retorna ID
a página estática definida como primeira página em configurações> leitura ).
WP_Query::is_page()
usa WP_Query::get_queried_object()
internamente para decidir se a página atual é a página presente nos argumentos do método No wp-signup.php
caso, o código que define o objeto consultado atual é o seguinte
/*...other code... */
elseif ( $this->is_singular && ! empty( $this->post ) ) {
$this->queried_object = $this->post;
$this->queried_object_id = (int) $this->post->ID;
}
/*...other code... */
Isso mostra que o wordpress, por algum motivo, consulta a primeira página para exibir wp-signup.php
e levanta as seguintes perguntas.
- Por que
is_front_page()
está retornando resultados errados? - O AFAIK
wp-signup.php
nunca pode ser definido como home page usando a configuração de administrador do Wordpress; por que o código do wordpress não está sendo resgatado apenas marcandoPHP_SELF
ouREQUEST_URI
? - Por que o WP_Query tem uma página inicial atual
$this->post
neste momento?
Eu descartei o problema do plug - in removendo o diretório plugins (e mu-plugins). Ainda se qualifica wp-signup.php
como primeira página, onde não é para nenhuma outra página.
Qualquer ajuda sobre esse problema será muito apreciada.
Atualização
Estou usando o WP verison 4.2.4 e é uma configuração multisite.
Obrigado.
if
condição:( ! isset( $GLOBALS['pagenow'] ) || $GLOBALS['pagenow'] !== 'wp-signup.php' ) && ( is_front_page() || is_home() )