Comprobar si la página actual es la página del Blog
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 header.
He estado revisando pero no encuentro la manera. Ayúdenme, por favor.
Para verificar si la página actual es la página del blog, puedes usar alguna de estas funciones:
// Método 1
if (is_home()) {
// Es la página principal del blog
}
// Método 2
if (is_front_page() && is_home()) {
// Es la página principal estática Y también la página del blog
} elseif (is_front_page()) {
// Es la página principal estática
} elseif (is_home()) {
// Es la página del blog
}

Si por 'página de blog' te refieres a una página estática configurada como página de entradas en los Ajustes de lectura, entonces podrías verificarlo haciendo esto:
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 de blog
} else {
// Todo lo demás
}
Cuando usas
is_home()
yis_front_page()
, debes usarlos en el orden correcto para evitar errores y probar cada configuración de usuario.
(Fuente: Etiquetas condicionales - La página de blog)
O simplemente:
if ( !is_front_page() && is_home() ) {
// Página de blog
}
O más simple (supongo):
if ( is_home() ) {
// Página de blog
}

Un caso de uso para usar if ( !is_front_page() && is_home() )
, al menos en mi opinión, es si estás distribuyendo un tema que tiene un estilo de diseño diferente para la página de inicio por defecto y la página de blog.

Estoy encontrando que is_front_page() devolverá verdadero independientemente de si se selecciona el archivo del blog o una página. Necesito verificación. https://codex.wordpress.org/Function_Reference/is_front_page

Puedes usar lo siguiente en el archivo functions.php de tus temas:
function is_blog () {
return ( is_archive() || is_author() || is_category() || is_home() || is_single() || is_tag()) && 'post' == get_post_type();
}
Y luego coloca esto en el archivo que estás verificando:
<?php if (is_blog()) { echo 'Estás en una página de blog'; } ?>
Puedes usar Hooks en tu archivo functions.php para enlazar lo anterior, para que aparezca en cada página.

Esta es una gran respuesta si quieres determinar si estás en una página de blog, pero no necesariamente en la página de blog (como la página de inicio del blog). Consulta la respuesta de @Giraldi para eso.

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 efectivamente esta solución usando el plugin Widget Logic.

Si por 'página de blog' te refieres a una página estática configurada como página de entradas en la sección de Lectura:
global $wp_query;
if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
//página de blog estática
}
PD: Esta solución también funciona en la acción template_redirect

Hola repinsa, bienvenido a WPSE :) Gracias por agregar tu respuesta. Ha recibido algunos votos negativos, probablemente porque tiene un error de sintaxis en el código (le falta un punto y coma después de global $wp_query
) pero también porque no responde completamente a la pregunta. Es una función, pero el OP preguntó cómo resolver esto en su archivo de cabecera, por lo que podría necesitar un poco más de explicación sobre qué poner y dónde. Nuevamente, bienvenido, ¡me alegra tenerte aquí!

Para obtener la página índice del blog, descubrí que
if ( !is_front_page() && is_home() ) {
// página del blog
}
no funciona para mí, tuve que usar la función get_option('page_for_posts') para identificar el post_id de la Página del Blog, mi solución es
if ( !is_front_page() && is_home() ){
if ( empty ( $post_id) ) {
global $post;
$post_id = get_option( 'page_for_posts' );
}
//página del blog
}

Existe un método complicado.
Supongamos que el slug de tu página de blog es blog
, puedes usar este código.
global $wp_query;
if($wp_query->query['pagename']=='blog'){
// esta es la página del blog
}

Supongo que es muy simple, yo estuve en una situación similar y utilicé la siguiente técnica que consiste en usar el slug de la página.
if( is_page('blog') ) {
echo "Esta es tu página de blog";
}
Pero asegúrate de no haber seleccionado la página de inicio para mostrar las publicaciones recientes del blog y de haber configurado una página específica para los blogs como blog o noticias, etc. Solo usa ese slug de página y estarás bien.

En mi opinión, la mejor solución en lugar de verificar si la página es la página de inicio o un archivo o no, OR & AND, puedes simplemente verificar la plantilla que utilizas.
Por ejemplo: Yo uso en mi página de entradas del blog esta plantilla:
template-blog.php
Por lo tanto, puedo distinguirla de cualquier otra página de la siguiente manera:
if( is_page_template('template-blog.php') ) {}
Espero que esto ayude.

Esto funcionó para mí... Incluso cuando entro en publicaciones individuales, el menú del blog se mantiene activo. Con esto, siempre puedes dirigirte a la página del blog.
[Nota: Esto funcionará cuando tu blog sea la 'Página de Publicaciones']
<li <?php if(get_post_type() == 'post' )
{echo 'class="current-menu-item"';} ?> >
<a href="<?php echo site_url('/blog');?>">
Blog
</a>
</li>
