Significado del fragmento "if ( is_home() && ! is_front_page() )"

23 abr 2016, 15:12:39
Vistas: 219K
Votos: 39

Veo el siguiente código frecuentemente en archivos index.php. Entiendo que is_front_page() devuelve verdadero cuando se visualiza la Página Principal del Sitio (ya sea mostrando el índice de entradas del blog o una página estática), mientras que is_home() devuelve verdadero cuando se visualiza el Índice de Entradas del Blog (ya sea mostrado en la página principal o en una página estática). Aún me confunde 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 fragmento de código es tan popular será muy apreciada.

1
Comentarios
Todas las respuestas a la pregunta 3
1
56

Aquí está la forma correcta de hacerlo:

if ( is_front_page() && is_home() ) {
// Página de inicio por defecto

} elseif ( is_front_page()){
// Página de inicio estática

} elseif ( is_home()){

// Página del blog

} else {

// Todo lo demás

}

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

19 sept 2016 22:19:26
Comentarios

¿Así es como se aplican estilos diferentes a páginas en WordPress? Por ejemplo, mi página de inicio puede tener una gran imagen hero, pero las páginas "Acerca de" y "Contacto" pueden no tener ninguna. ¿Es así como se logran diseños diferentes para páginas distintas?

user3660857 user3660857
23 feb 2022 04:45:13
2
21

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

Ejemplo:

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

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

Esto se utiliza para que el título de la página se muestre siempre que las publicaciones se muestren en una página, pero no muestre nada cuando las entradas del blog se muestren en la página de inicio (home).

Lo hacemos porque si está en la página de inicio... mostrará el título de la primera publicación, haciendo que aparezca dos veces (una en la parte superior en H1 y otra cuando se recorran las publicaciones).

23 abr 2016 16:03:58
Comentarios

Gracias Shramee. Encontré el título de mi página de índice del blog en un <h1> al intentar averiguarlo, pero en realidad no aparece en ninguna parte. Creo que algunos diseñadores de temas 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 principiantes si no está comentado/documentado.

olliew olliew
23 abr 2016 16:53:01

Bueno... Ayuda saber en qué contexto se usan las publicaciones (como en el ejemplo anterior de Noticias), pero está principalmente ahí para SEO, H1 juega un papel importante en ayudar a los bots de búsqueda a entender mejor el contenido de la página.

shramee shramee
24 abr 2016 09:16:20
1

No estoy seguro de que sea "popular", no me lo parece (pero tampoco veo tantos temas).

Pareces entender bien lo que hace cada condicional, así que esto no debería confundirte. Esto combina condiciones para verificar que se esté mostrando el índice del blog y que no sea la página de inicio.

Ah, la razón para single_post_title() supongo que es que muestra el título para $wp_query->queried object (configurado por la consulta principal como contexto actual), en lugar del global $post (configurado al iterar el loop).

En algunas circunstancias estos serán iguales, pero no en casos como el que verifican las condiciones. El loop contendrá posts, pero el objeto consultado será una página (a menos que esté mezclando cosas :).

23 abr 2016 15:32:43
Comentarios

He estado revisando muchos temas recientemente y es bastante común. Tienes razón en que entiendo lo que hace el loop, 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 olliew
23 abr 2016 16:28:35