Periksa apakah halaman saat ini adalah Halaman Blog

33

Saya baru mengenal WordPress. Saya mencari cara untuk memeriksa apakah halaman saat ini adalah halaman blog dalam kode file header.

Saya telah memeriksa tetapi saya tidak dapat menemukan jalan. Bantu aku, Pls.

KarSho
sumber

Jawaban:

42

Jika dengan ' halaman blog ' Anda berarti halaman statis ditetapkan sebagai halaman posting di Pengaturan Membaca , maka Anda dapat memeriksanya dengan melakukan ini:

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

Saat Anda menggunakan is_home()dan is_front_page(), Anda harus menggunakannya dalam urutan yang benar untuk menghindari bug dan menguji setiap konfigurasi pengguna.

(Sumber: Tag Bersyarat - Halaman Blog )

Atau sederhananya:

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

Atau lebih sederhana (saya kira):

if ( is_home() ) {
  // blog page
}
Giraldi
sumber
Satu use case untuk digunakan if ( !is_front_page() && is_home() ), setidaknya menurut saya, adalah jika Anda mendistribusikan tema yang memiliki gaya tata letak yang berbeda untuk homepage default dan halaman blog .
Giraldi
Saya menemukan is_front_page () akan mengembalikan true apakah arsip blog atau halaman dipilih atau tidak. Perlu verifikasi. codex.wordpress.org/Function_Reference/is_front_page
atwellpub
19

Anda dapat menggunakan yang berikut ini di file functions.php tema Anda:

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

Dan kemudian letakkan ini di file yang Anda periksa:

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

Anda dapat menggunakan Hooks di file functions.php Anda untuk mengaitkan di atas, untuk membuatnya muncul di setiap halaman.

Vagish
sumber
1
Ini adalah jawaban yang bagus jika Anda ingin menentukan apakah Anda berada di sebuah halaman blog, tapi belum tentu yang halaman blog (seperti dalam halaman rumah blog). Lihat jawaban @ Giraldi untuk itu.
Tim Malone
Saya salah berasumsi bahwa is_blog () ada karena is_page () ada. Tidak terpikir oleh saya untuk berkonsultasi dengan Indeks Tag Bersyarat Resmi WordPress . Saya dapat menerapkan solusi ini secara efektif menggunakan plugin Widget Logic.
Clarus Dignus
11

Jika dengan 'halaman blog' Anda berarti halaman statis ditetapkan sebagai halaman posting di Bacaan:

global $wp_query;

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

PS. Solusi ini juga berfungsi pada tindakan template_redirect

Sergey Repin
sumber
Hai repinsa, selamat datang di WPSE :) Terima kasih telah menambahkan jawaban Anda. Sudah sedikit ditolak, mungkin karena memiliki kesalahan sintaksis dalam kode (tidak ada titik koma setelah global $wp_query), tetapi juga karena tidak sepenuhnya menjawab pertanyaan. Ini sebuah fungsi, tetapi OP bertanya bagaimana cara mengatasinya dalam file header-nya - jadi mungkin perlu sedikit penjelasan lebih lanjut tentang apa yang harus diletakkan di mana. Sekali lagi, selamat datang, senang Anda di sini!
Tim Malone
2
Itu sebenarnya satu-satunya jawaban yang baik di sini, seharusnya memiliki lebih banyak suara positif.
Lacho Tomov
2

Untuk mendapatkan halaman indeks blog , saya menemukan itu

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

tidak berfungsi untuk saya, saya harus menggunakan fungsi get_option ('page_for_posts') untuk mengidentifikasi Halaman Blog post_id, jawaban saya adalah

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

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

    //blog page
}
J. Wang
sumber
0

Ada metode yang rumit.

http://example.com/blog

Misalkan jika siput halaman blog blogAnda, Anda dapat menggunakan kode ini.

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

HOMEPAGE

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

BLOG

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

Saya kira itu sangat sederhana saya berada dalam situasi yang sama dan saya menggunakan teknik berikut yaitu menggunakan halaman siput.

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

Tetapi pastikan Anda tidak memilih beranda untuk menampilkan posting blog terbaru dan Anda telah menetapkan halaman tertentu untuk blog seperti blog atau berita dll, cukup gunakan halaman slug dan Anda akan baik-baik saja.

Rahman Zeb
sumber
0

Anda dapat gunakan..

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

Do stuff here

<?php } ?>

untuk memeriksa apakah itu satu posting blog. Atau...

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

Do stuff here

<?php } ?>

untuk memeriksa apakah itu beranda blog

Xav
sumber
2
Tidak berfungsi jika Anda telah mengubah halaman blog
cdmckay
Ini tidak memberikan jawaban yang benar untuk OP. Ini menunjukkan Anda berada pada satu posting, bukan "halaman blog".
butlerblog
-1

Saya menggunakan cara ini

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