Verifique se a página atual é a Página do blog

33

Eu sou novo no WordPress. Estou procurando uma maneira de verificar se a página atual é a página do blog no código do arquivo de cabeçalho.

Eu verifiquei, mas não consigo encontrar um caminho. Me ajude por favor.

KarSho
fonte

Respostas:

42

Se, por ' página do blog ', você quis dizer uma página estática definida como página de postagens nas Configurações de Leitura , você pode verificá-la fazendo o seguinte:

if ( is_front_page() && is_home() ) {
  // Default homepage
} elseif ( is_front_page() ) {
  // static homepage
} elseif ( is_home() ) {
  // blog page
} else {
  //everyting else
}

Quando você usa is_home()e is_front_page(), você deve usá-los na ordem correta para evitar erros e testar todas as configurações do usuário.

(Fonte: Tags condicionais - A página do blog )

Ou simplesmente:

if ( !is_front_page() && is_home() ) {
  // blog page
}

Ou mais simplesmente (suponho):

if ( is_home() ) {
  // blog page
}
Giraldi
fonte
Um caso de uso a ser utilizado if ( !is_front_page() && is_home() ), pelo menos na minha opinião, é se você estiver distribuindo um tema com um estilo de layout diferente para a página inicial padrão e a página do blog .
Giraldi
Estou descobrindo que is_front_page () retornará true, independentemente de o arquivo do blog ou a página estar selecionada. Precisa de verificação. codex.wordpress.org/Function_Reference/is_front_page
atwellpub
19

Você pode usar o seguinte no arquivo functions.php dos temas:

function is_blog () {
    return ( is_archive() || is_author() || is_category() || is_home() || is_single() || is_tag()) && 'post' == get_post_type();
}

E então coloque isso no arquivo que você está verificando:

<?php if (is_blog()) { echo 'You are on a blog page'; } ?>

Você pode usar o Hooks no seu arquivo functions.php para conectar o item acima, para fazer com que apareça em todas as páginas.

Vagish
fonte
1
Essa é uma ótima resposta se você deseja determinar se está em uma página de blog, mas não necessariamente na página do blog (como na página inicial do blog). Veja a resposta de @ Giraldi para isso.
Tim Malone
Eu assumi incorretamente que is_blog () existe porque is_page () existe. Não me ocorreu consultar o Índice oficial de tags condicionais do WordPress . Consegui aplicar efetivamente esta solução usando o plugin Widget Logic.
Clarus Dignus 14/04
11

Se por "página do blog" você quis dizer uma página estática definida como página de postagens na Leitura:

global $wp_query;

if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
    //static blog page
}

PS. Esta solução também funciona na ação template_redirect

Sergey Repin
fonte
Oi repinsa, bem-vindo ao WPSE :) Obrigado por adicionar sua resposta. Foi um pouco rejeitado, provavelmente porque há um erro de sintaxe no código (falta um ponto e vírgula após o global $wp_query), mas também porque não responde totalmente à pergunta. É uma função, mas o OP perguntou como resolver isso em seu arquivo de cabeçalho - portanto, pode ser necessário um pouco mais de explicação sobre o que colocar onde. Mais uma vez, bem-vindo, prazer em recebê-lo aqui!
Tim Malone
2
Essa é realmente a única boa resposta aqui, deveria ter tido mais votos positivos.
Lacho Tomov
2

Para obter a página de índice do blog , descobri que

if ( !is_front_page() && is_home() ) {
  // blog page
}

não está funcionando para mim, tive que usar a função get_option ('page_for_posts') para identificar a Página do blog post_id, minha resposta é

if ( !is_front_page() && is_home() ){  

    if ( empty ( $post_id) ) {
        global $post;
        $post_id =  get_option( 'page_for_posts' );
    }

    //blog page
}
J.Wang
fonte
0

Existe um método complicado.

http://example.com/blog

Suponha que, se o slug da página do seu blog for blog, você pode usar esse código.

global $wp_query;
if($wp_query->query['pagename']=='blog'){
// this is blog page
}
Rajilesh Panoli
fonte
0

PAGINA INICIAL

if(is_home() && is_front_page() || is_front_page()): // static or default hompage
 ...
endif;

BLOG

if(is_home() && !is_front_page()): // blog
 ...
endif;
DevWL
fonte
0

Eu acho que é muito simples, eu estava na mesma situação e usei a seguinte técnica, que é usar a página slug.

if( is_page('blog') ) {
echo "This is your blog page"; 
}

Mas verifique se você não selecionou a página inicial para exibir postagens recentes no blog e definiu uma página específica para blogs como blog ou notícias, etc.

Rahman Zeb
fonte
0

Você pode usar..

<?php if ( is_single() ) { ?>

Do stuff here

<?php } ?>

para verificar se é uma única postagem no blog. Ou...

<?php if ( is_home() ) { ?>

Do stuff here

<?php } ?>

para verificar se é a página inicial do blog

Xav
fonte
2
Não funciona se você alterou a página do blog
cdmckay
Isso não fornece uma resposta correta para o OP. Isso indica que você está em uma única postagem, não na "página do blog".
butlerblog
-1

Eu uso assim

// Get body classes as array
$body_classes = get_body_class();
// Check if "blog" class exists in the array
if(in_array("blog", $body_classes)) {
   // Do stuff
}
John Smith
fonte