Verifică dacă pagina curentă este Pagina de Blog

19 iul. 2013, 14:20:02
Vizualizări: 162K
Voturi: 52

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.

0
Toate răspunsurile la întrebare 11
2
68

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() și is_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
}
3 aug. 2014 06:50:20
Comentarii

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.

Giraldi Giraldi
3 aug. 2014 10:03:14

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

atwellpub atwellpub
28 mai 2017 03:32:40
2
30

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ă.

18 apr. 2014 11:26:49
Comentarii

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.

Tim Malone Tim Malone
18 apr. 2016 01:04:45

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.

Clarus Dignus Clarus Dignus
14 apr. 2019 15:34:16
2
19

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

17 apr. 2016 13:33:00
Comentarii

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!

Tim Malone Tim Malone
18 apr. 2016 01:07:04

Acesta este de fapt singurul răspuns bun de aici, ar fi trebuit să primească mai multe voturi pozitive.

LachoTomov LachoTomov
23 dec. 2017 16:16:41
0

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
}
16 mai 2018 21:58:51
2

Poți folosi..

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

Fă ceva aici

<?php } ?>

pentru a verifica dacă este o postare individuală de blog. Sau...

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

Fă ceva aici

<?php } ?>

pentru a verifica dacă este pagina principală a blogului

19 iul. 2013 14:23:17
Comentarii

Nu funcționează dacă ai schimbat pagina de blog

cdmckay cdmckay
9 oct. 2014 18:09:22

Acest răspuns nu oferă o soluție corectă pentru întrebarea inițială. Indică faptul că te afli pe un singur post, nu pe "pagina de blog".

butlerblog butlerblog
27 dec. 2017 16:29:08
2

Eu folosesc această metodă

// Obține clasele body ca array
$body_classes = get_body_class();
// Verifică dacă clasa "blog" există în array
if(in_array("blog", $body_classes)) {
   // Execută acțiuni
}
27 sept. 2015 14:07:57
Comentarii

Acest lucru nu este ideal, nu aș recomanda-o.

Uriahs Victor Uriahs Victor
29 sept. 2021 01:40:14

Nu m-aș baza pe o clasă CSS.

Azamat Azamat
31 aug. 2022 08:13:36
0

Există o metodă destul de complicată.

http://example.com/blog

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
}
4 oct. 2016 16:04:05
0

PAGINA PRINCIPALĂ

if(is_home() && is_front_page() || is_front_page()): // pagină principală statică sau implicită
 ...
endif;

BLOG

if(is_home() && !is_front_page()): // blog
 ...
endif;
17 dec. 2016 06:51:06
0

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ă.

16 sept. 2017 11:01:56
0

Î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ă.

21 sept. 2021 22:11:40
0

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'] Meniu activ pentru pagina de blog

   <li <?php if(get_post_type() == 'post' )
     {echo 'class="current-menu-item"';} ?> >
       <a href="<?php echo site_url('/blog');?>">
         Blog
       </a>
    </li>
2 dec. 2021 22:32:33