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

23

Eu vejo muito o seguinte código nos arquivos index.php. Eu entendo que is_front_page()retorna true ao exibir a página inicial do site (seja exibindo o índice de postagens do blog ou uma página estática), enquanto is_home()retorna true quando visualiza o índice de postagens do blog (seja exibido na primeira página ou em uma página estática). Ainda estou um pouco perplexo com o uso do código a seguir -

<?php if ( have_posts() ) : ?>

    <?php if ( is_home() && ! is_front_page() ) : ?>
        <header>
            <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
        </header>
    <?php endif; ?>

Qualquer explicação sobre por que esse pedaço de código é tão popular é muito apreciada.

olliew
fonte

Respostas:

15

Isso exibirá o título da página quando uma página estática estiver definida para mostrar postagens.

Por exemplo

Eu mostro posts na minha página inicial ... Não fará nada.

Se eu, digamos, mostrar posts na página intitulada Notícias ... Ele mostrará Notícias no H1.

Isso é usado para que o título da página seja mostrado sempre que as postagens forem exibidas em uma página, mas nada quando as postagens do blog forem mostradas na primeira página (página inicial).

Fazemo-lo porque se estiver na página inicial ... mostrará o título do primeiro post, fazendo com que apareça duas vezes (uma vez no topo no H1 e novamente quando as postagens são repetidas).

shramee
fonte
Obrigado Shramee. Encontrei o título da página de índice do meu blog em <h1> ao tentar descobrir, mas na verdade ele não aparece em lugar algum. Eu acho que alguns temáticos o usam apenas para ajudar as pessoas que usam leitores de tela e depois ocultam o texto real, o que é um pouco confuso para iniciantes, se não for comentado / documentado.
olliew
Bem ... Ajuda saber em quais postagens de contexto são usadas (como no exemplo acima para Notícias), mas existe principalmente para SEO , o H1 tem um papel importante em ajudar os robôs de busca a entender melhor o conteúdo da página.
shramee
26

Aqui está como fazer isso corretamente:

if ( is_front_page() && is_home() ) {
// Default homepage

} elseif ( is_front_page()){
// Static homepage

} elseif ( is_home()){

// Blog page

} else {

// Everything else

}

Essa é a única maneira (correta) de exibir ou alterar o conteúdo com sua página inicial e sua página de blog.

Md. Abunaser Khan
fonte
4

Eu não tenho certeza sobre "popular", isso não me parece (mas não vejo tantos temas).

Você parece entender bem o que cada condicional faz, portanto isso não deve ser confuso para você. Isto combina condições de verificar que o índice do blog está sendo exibido e é não na primeira página.

Ah, a razão para single_post_title()eu adivinhar é que ele exibe o título para $wp_query->queried object(configurado pela consulta principal como contexto atual), em vez de$post global (configurado pelo loop de iteração).

Em algumas circunstâncias, serão os mesmos, mas não no caso de verificação de condições. O loop conterá postagens , mas o objeto consultado será a página (a menos que eu esteja misturando as coisas :).

Rarst
fonte
Estive pesquisando vários modelos recentemente e é muito comum. Você está certo que eu entendo o que o loop está fazendo, apenas não entendo por que as pessoas escolheriam fazê-lo dessa maneira específica. Por que usar single_post_title em vez de the_title ()?
olliew