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

23

Veo mucho el siguiente código en los archivos index.php. Entiendo que is_front_page()devuelve verdadero cuando ve la página principal del sitio (ya sea que muestre el índice de publicaciones de blog o una página estática), mientras que is_home()devuelve verdadero cuando ve el índice de publicaciones de blog (ya sea que se muestre en la página principal o en una página estática). Todavía estoy algo perplejo sobre el uso del siguiente código:

<?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; ?>

Cualquier explicación de por qué este código es tan popular es muy apreciada.

olliew
fuente

Respuestas:

15

Esto mostrará el título de la página cuando una página estática esté configurada para mostrar publicaciones.

P.ej

Muestro publicaciones en mi página de inicio ... No hará nada.

Si, por ejemplo, muestro publicaciones en la página titulada Noticias ... Mostrará Noticias en H1.

Esto se usa para que se muestre el título de la página, siempre que las publicaciones se muestran en una página, pero nada cuando las publicaciones de blog se muestran en la página principal (página de inicio).

Lo hacemos porque si está en la página de inicio ... mostrará el título de la primera publicación, haciéndolo aparecer dos veces (una vez en la parte superior en H1 y otra vez cuando las publicaciones se repiten).

shramee
fuente
Gracias Shramee Encontré el título de la página de índice de mi blog en un <h1> al intentar descifrarlo, pero en realidad no aparece en ningún lado. Creo que algunos temáticos lo usan solo para ayudar a las personas que usan lectores de pantalla y luego ocultan el texto real, lo cual es un poco confuso para los novatos si no está comentado / documentado.
olliew
Bueno ... Ayuda saber en qué contexto se usan las publicaciones (como en el ejemplo anterior para Noticias), pero está principalmente allí para SEO , H1 juega un papel importante para ayudar a los robots de búsqueda a comprender mejor el contenido de la página.
shramee
26

Aquí está cómo hacerlo bien:

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

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

} elseif ( is_home()){

// Blog page

} else {

// Everything else

}

Esta es la única forma (correcta) de mostrar o modificar contenido con su página de inicio y su página de blog.

MD Abunaser Khan
fuente
4

No estoy seguro acerca de "popular", no me parece que sea así (pero entonces no veo tantos temas).

Parece que comprende bien lo que hace cada condicional, por lo que esto no debería ser confuso para usted. Esto combina condiciones para verificar que el índice del blog se muestre y no esté en la página principal.

Ah, single_post_title()supongo que la razón es que muestra el título $wp_query->queried object(configurado por la consulta principal como contexto actual), en lugar de $postglobal (configurado por iteración en bucle).

En algunas circunstancias, estos serán los mismos, pero no en el caso de que se verifique la condición. El bucle contendrá publicaciones , pero el objeto consultado será la página (a menos que esté mezclando cosas :).

Rarst
fuente
He estado buscando muchas plantillas recientemente y es muy común. Tienes razón en que entiendo lo que está haciendo el ciclo, simplemente no entiendo por qué la gente elegiría hacerlo de esta manera particular. ¿Por qué usar single_post_title en lugar de the_title ()?
olliew