Compruebe si la página actual es la página del blog

33

Soy nuevo en WordPress. Estoy buscando una manera de verificar si la página actual es la página del blog en el código del archivo de encabezado.

Lo he comprobado pero no puedo encontrar una manera. Ayudame por favor.

KarSho
fuente

Respuestas:

42

Si por ' página de blog ' se refería a una página estática configurada como página de publicaciones en la Configuración de lectura , puede verificarla haciendo esto:

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

Cuando usa is_home()y is_front_page(), debe usarlos en el orden correcto para evitar errores y probar la configuración de cada usuario.

(Fuente: Etiquetas condicionales - La página del blog )

O simplemente:

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

O más simplemente (supongo):

if ( is_home() ) {
  // blog page
}
Giraldi
fuente
Un caso de uso para usar if ( !is_front_page() && is_home() ), al menos en mi opinión, es si está distribuyendo un tema que tiene un estilo de diseño diferente para la página de inicio predeterminada y la página del blog .
Giraldi
Estoy descubriendo que is_front_page () devolverá verdadero si se selecciona o no el archivo del blog o una página. Necesita verificación codex.wordpress.org/Function_Reference/is_front_page
atwellpub
19

Puede utilizar lo siguiente en su archivo de funciones themes.php:

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

Y luego pon esto en el archivo que estás revisando:

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

Puede usar Hooks en su archivo functions.php para enganchar lo anterior, para que aparezca en cada página.

Vago
fuente
1
Esta es una gran respuesta si desea determinar si está en una página de blog, pero no necesariamente en la página del blog (como en la página de inicio del blog). Ver la respuesta de @ Giraldi para eso.
Tim Malone
Asumí incorrectamente que is_blog () existe porque is_page () existe. No se me ocurrió consultar el índice oficial de etiquetas condicionales de WordPress . Pude aplicar esta solución de manera efectiva utilizando el complemento Widget Logic.
Clarus Dignus
11

Si por 'página de blog' se refería a una página estática establecida como página de publicaciones en la lectura:

global $wp_query;

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

PD. Esta solución también funciona en la acción template_redirect

Sergey Repin
fuente
Hola repinsa, bienvenido a WPSE :) Gracias por agregar tu respuesta. Se ha rechazado un poco, probablemente porque tiene un error de sintaxis en el código (le falta un punto y coma después del global $wp_query) pero también porque no responde completamente la pregunta. Es una función, pero el OP preguntó cómo resolver esto en su archivo de encabezado, por lo que podría necesitar un poco más de explicación sobre qué poner dónde. De nuevo, bienvenido, me alegro de tenerte aquí.
Tim Malone
2
Esa es realmente la única buena respuesta aquí, debería haber tenido más votos a favor.
Lacho Tomov
2

Para obtener la página de índice del blog , descubrí que

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

no me funciona, tuve que usar la función get_option ('page_for_posts') para identificar la página del blog post_id, mi respuesta es

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

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

    //blog page
}
J.Wang
fuente
0

Hay un método complicado.

http://example.com/blog

Supongamos que si la babosa de tu página de blog es blog, puedes usar este código.

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

PÁGINA PRINCIPAL

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

BLOG

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

Supongo que es muy simple. Estaba en la misma situación y utilicé la siguiente técnica, que es utilizar el slug de la página.

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

Pero asegúrese de no haber seleccionado la página de inicio para mostrar las publicaciones de blog recientes y de haber establecido una página específica para blogs como blog o noticias, etc., solo use esa babosa de página y estará bien.

Rahman Zeb
fuente
0

Puedes usar..

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

Do stuff here

<?php } ?>

para verificar si se trata de una sola publicación de blog. O...

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

Do stuff here

<?php } ?>

para verificar si es la página de inicio del blog

Xav
fuente
2
No funciona si ha cambiado la página del blog
cdmckay
Esto no proporciona una respuesta correcta al OP. Esto indica que estás en una sola publicación, no en "la página del blog".
butlerblog
-1

Yo uso de esta manera

// 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
fuente