Verifică dacă pagina curentă este Pagina de Blog
Sunt nou în WordPress. Caut o modalitate de a verifica dacă pagina curentă este pagina de blog în codul fișierului header.
Am verificat dar nu pot găsi o modalitate. Vă rog să mă ajutați.

Dacă prin 'pagina de blog' te referi la o pagină statică setată ca pagină de articole în Setările de Citire, atunci poți verifica asta făcând următoarele:
if ( is_front_page() && is_home() ) {
// Pagina principală implicită
} elseif ( is_front_page() ) {
// Pagina principală statică
} elseif ( is_home() ) {
// Pagina de blog
} else {
// Orice altceva
}
Când folosești
is_home()
șiis_front_page()
, trebuie să le folosești în ordinea corectă pentru a evita erorile și pentru a testa fiecare configurație a utilizatorului.
(Sursa: Etichete Condiționale - Pagina de Blog)
Sau pur și simplu:
if ( !is_front_page() && is_home() ) {
// Pagina de blog
}
Sau și mai simplu (presupun):
if ( is_home() ) {
// Pagina de blog
}

Un caz de utilizare pentru if ( !is_front_page() && is_home() )
, cel puțin în opinia mea, este dacă distribuiți o temă care are un stil de layout diferit pentru pagina principală implicită și pagina de blog.

Am observat că is_front_page() va returna true indiferent dacă este selectată arhiva blogului sau o pagină. Este nevoie de verificare. https://codex.wordpress.org/Function_Reference/is_front_page

Puteți utiliza următoarele în fișierul functions.php al temei:
function is_blog () {
return ( is_archive() || is_author() || is_category() || is_home() || is_single() || is_tag()) && 'post' == get_post_type();
}
Și apoi puneți acest cod în fișierul pe care îl verificați:
<?php if (is_blog()) { echo 'Sunteți pe o pagină de blog'; } ?>
Puteți utiliza Hook-uri în fișierul functions.php pentru a lega codul de mai sus, astfel încât acesta să apară pe fiecare pagină.

Acesta este un răspuns excelent dacă dorești să determini dacă te afli pe o pagină de blog, dar nu neapărat pe pagina principală a blogului. Pentru aceasta, vezi răspunsul lui @Giraldi.

Am presupus greșit că există is_blog() pentru că există is_page(). Nu mi-a trecut prin cap să consult Indexul oficial de Tag-uri Condiționale WordPress. Am reușit să aplic efectiv această soluție folosind plugin-ul Widget Logic.

Dacă prin "pagina de blog" te referi la o pagină statică setată ca pagină de articole în secțiunea de Citire:
global $wp_query;
if ( isset( $wp_query ) && (bool) $wp_query->is_posts_page ) {
//pagină statică de blog
}
PS. Această soluție funcționează și pe acțiunea template_redirect

Bună repinsa, bine ai venit pe WPSE :) Mulțumim pentru răspunsul tău. A primit câteva voturi negative, probabil din cauza unei erori de sintaxă în cod (lipsește punct și virgulă după global $wp_query
), dar și pentru că nu răspunde complet la întrebare. Este o funcție, dar întrebarea era cum să implementezi asta în fișierul header - deci ar fi nevoie de mai multe explicații despre ce să pui unde. Din nou, bine ai venit, mă bucur că ești aici!

Pentru a obține pagina index a blogului, am constatat că
if ( !is_front_page() && is_home() ) {
// pagină blog
}
nu funcționează pentru mine, a trebuit să folosesc funcția get_option('page_for_posts') pentru a identifica post_id-ul Paginii de Blog, soluția mea este
if ( !is_front_page() && is_home() ){
if ( empty ( $post_id) ) {
global $post;
$post_id = get_option( 'page_for_posts' );
}
//pagină blog
}

Există o metodă destul de complicată.
Să presupunem că slug-ul paginii tale de blog este blog
, poți folosi acest cod.
global $wp_query;
if($wp_query->query['pagename']=='blog'){
// aceasta este pagina de blog
}

Cred că este foarte simplu. Am fost într-o situație similară și am folosit următoarea tehnică, care constă în utilizarea slug-ului paginii.
if( is_page('blog') ) {
echo "Aceasta este pagina ta de blog";
}
Dar asigură-te că nu ai selectat pagina de start pentru a afișa postările recente de pe blog și că ai setat o pagină specifică pentru bloguri, cum ar fi blog sau știri etc. Doar folosește slug-ul acelei pagini și vei fi în regulă.

În opinia mea, cea mai bună soluție în loc să verifici dacă pagina este acasă sau arhivă sau nu OR & AND poți pur și simplu să verifici șablonul pe care îl folosești.
De exemplu: Eu folosesc în pagina mea de articole de blog acest șablon:
template-blog.php
Așadar, pot să o disting de orice altă pagină astfel:
if( is_page_template('template-blog.php') ) {}
Sper că acest lucru te ajută.

Aceasta soluție a funcționat pentru mine... Chiar și când intru în postări individuale, meniul blogului rămâne activat. Astfel, poți avea întotdeauna ca țintă pagina de blog.
[Notă: Această soluție funcționează doar dacă blogul tău este setat ca 'Pagina de postări']
<li <?php if(get_post_type() == 'post' )
{echo 'class="current-menu-item"';} ?> >
<a href="<?php echo site_url('/blog');?>">
Blog
</a>
</li>
