Sprawdź, czy bieżąca strona jest stroną blogu


33

Jestem nowy w WordPress. Szukam sposobu, aby sprawdzić, czy bieżąca strona jest stroną blogu w kodzie pliku nagłówka.

Sprawdziłem, ale nie mogę znaleźć sposobu. Pomoż mi proszę.

Odpowiedzi:


42

Jeśli przez „ stronę blogu ” rozumiesz statyczną stronę ustawioną jako stronę postów w Ustawieniach czytania , możesz to sprawdzić, wykonując następujące czynności:

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

Kiedy używasz is_home()i is_front_page(), musisz używać ich we właściwej kolejności, aby uniknąć błędów i przetestować każdą konfigurację użytkownika.

(Źródło: Tagi warunkowe - strona blogu )

Lub po prostu:

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

Lub prościej (chyba):

if ( is_home() ) {
  // blog page
}

Jednym z przykładów użycia if ( !is_front_page() && is_home() ), przynajmniej moim zdaniem, jest dystrybucja motywu, który ma inny styl układu dla domyślnej strony głównej i strony blogu .
Giraldi,

Zauważyłem, że is_front_page () zwróci true, niezależnie od tego, czy wybrano archiwum blogu czy stronę. Potrzebujesz weryfikacji. codex.wordpress.org/Function_Reference/is_front_page
atwellpub

19

W pliku motywów funkcji.php można użyć następujących elementów:

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

A następnie umieść to w sprawdzanym pliku:

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

Możesz użyć Haków w pliku functions.php, aby zaczepić powyższe, aby pojawiały się na każdej stronie.


1
Jest to świetne rozwiązanie, jeśli chcesz sprawdzić, czy jesteś na na stronie bloga, ale nie neccessarily strona bloga (jak na stronie głównej bloga). Zobacz na to odpowiedź @ Giraldi.
Tim Malone

Niepoprawnie założyłem, że is_blog () istnieje, ponieważ istnieje is_page (). Nie przyszło mi do głowy, aby zapoznać się z oficjalnym indeksem tagów warunkowych WordPress . Udało mi się skutecznie zastosować to rozwiązanie za pomocą wtyczki Widget Logic.
Clarus Dignus

11

Jeśli przez „stronę blogu” rozumiesz statyczną stronę ustawioną jako stronę postów w czytaniu:

global $wp_query;

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

PS. To rozwiązanie działa również w przypadku akcji redirect_redagent


Cześć repinsa, witamy na WPSE :) Dziękujemy za dodanie odpowiedzi. Zostało nieco odrzucone, prawdopodobnie dlatego, że ma błąd składniowy w kodzie (brakuje po nim średnika global $wp_query), ale także dlatego, że nie w pełni odpowiada na pytanie. Jest to funkcja, ale OP zapytał, jak to zrobić w swoim pliku nagłówkowym - więc może potrzebować trochę więcej wyjaśnień na temat tego, co gdzie umieścić. Jeszcze raz witamy, cieszę się, że tu jesteś!
Tim Malone 17.04.16

2
To właściwie jedyna dobra odpowiedź tutaj, powinna mieć więcej głosów pozytywnych.
Lacho Tomov

2

Aby znaleźć stronę indeksu blogu , znalazłem to

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

nie działa dla mnie, musiałem użyć funkcji get_option ('page_for_posts'), aby zidentyfikować stronę bloga post_id, moja odpowiedź brzmi:

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

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

    //blog page
}

0

Istnieje trudna metoda.

http://example.com/blog

Załóżmy, że jeśli twoja strona na blogu jest taka blog, możesz użyć tego kodu.

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

0

STRONA GŁÓWNA

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

BLOG

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

0

Wydaje mi się, że to bardzo proste, że byłem w tej samej sytuacji i zastosowałem następującą technikę, która polega na użyciu strony.

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

Ale upewnij się, że nie wybrałeś strony głównej do wyświetlania ostatnich postów na blogu i ustawiłeś konkretną stronę dla blogów, takich jak blog, wiadomości itp., Po prostu użyj tej strony i wszystko będzie dobrze.


0

Możesz użyć..

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

Do stuff here

<?php } ?>

aby sprawdzić, czy jest to pojedynczy post na blogu. Lub...

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

Do stuff here

<?php } ?>

aby sprawdzić, czy jest to strona główna bloga


2
Nie działa, jeśli zmieniłeś stronę bloga
cdmckay

To nie zapewnia poprawnej odpowiedzi na PO. Oznacza to, że jesteś w jednym poście, a nie „stronie bloga”.
butlerblog

-1

Używam w ten sposób

// 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
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.