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

23

Saya melihat kode berikut banyak di file index.php. Saya mengerti bahwa is_front_page()mengembalikan true ketika melihat Halaman Depan Situs (apakah menampilkan indeks posting blog atau halaman statis), sementara is_home()mengembalikan true ketika melihat Indeks Posting Blog (apakah ditampilkan di halaman depan atau pada halaman statis). Saya masih agak bingung tentang penggunaan kode berikut -

<?php if ( have_posts() ) : ?>

    <?php if ( is_home() && ! is_front_page() ) : ?>
        <header>
            <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
        </header>
    <?php endif; ?>

Penjelasan mengapa potongan kode ini sangat populer sangat dihargai.

olliew
sumber

Jawaban:

15

Ini akan menampilkan judul halaman ketika halaman statis diatur untuk menampilkan posting.

Misalnya

Saya menunjukkan posting di beranda saya ... Itu tidak akan membantu.

Jika saya, misalnya, menampilkan pos pada halaman berjudul Berita ... Ini akan menampilkan Berita dalam H1.

Ini digunakan agar judul halaman ditampilkan, kapan pun posting ditampilkan pada halaman, tetapi tidak ada apa-apa ketika posting blog ditampilkan di halaman depan (halaman muka).

Kami melakukannya karena jika ada di beranda ... itu akan menampilkan judul posting pertama, membuatnya muncul dua kali (sekali di bagian atas dalam H1 dan lagi ketika posting diulangi).

semak
sumber
Terima kasih, Shramee. Saya menemukan judul halaman indeks blog saya di <h1> ketika mencoba mencari tahu tetapi sebenarnya tidak muncul di mana pun. Saya pikir beberapa tema menggunakannya hanya untuk membantu orang menggunakan pembaca layar, dan kemudian menyembunyikan teks yang sebenarnya, yang agak membingungkan bagi pemula jika tidak berkomentar / didokumentasikan.
olliew
Yah ... Ini membantu untuk mengetahui di mana posting konteks digunakan, (seperti dalam contoh di atas untuk Berita) tetapi terutama di sana untuk SEO , H1 memainkan peran besar dalam membantu bot pencarian memahami konten halaman lebih baik.
shramee
26

Inilah cara melakukannya dengan benar:

if ( is_front_page() && is_home() ) {
// Default homepage

} elseif ( is_front_page()){
// Static homepage

} elseif ( is_home()){

// Blog page

} else {

// Everything else

}

Ini adalah satu-satunya cara (kanan) untuk menampilkan atau mengubah konten dengan beranda dan halaman blog Anda.

Nyonya Abunaser Khan
sumber
4

Saya tidak yakin tentang "populer", menurut saya sepertinya tidak (tapi kemudian saya tidak melihat banyak tema).

Anda tampaknya memahami dengan baik apa yang dilakukan oleh masing-masing kondisional, jadi ini seharusnya tidak membingungkan Anda. Kondisi menggabungkan ini untuk memeriksa bahwa indeks blog sedang ditampilkan dan itu tidak di halaman depan.

Ah, alasan single_post_title()saya akan menebak adalah bahwa ia menampilkan judul untuk $wp_query->queried object(diatur oleh permintaan utama sebagai konteks saat ini), bukan $postglobal (diatur oleh pengulangan berulang).

Dalam beberapa keadaan ini akan sama, tetapi tidak dalam kasus seperti kondisi memeriksa. Loop akan berisi posting , tetapi objek yang diminta akan menjadi halaman (kecuali jika saya mencampuradukkannya :).

Jarang
sumber
Saya telah melihat banyak template baru-baru ini dan itu sangat umum. Anda benar bahwa saya mengerti apa yang dilakukan loop, saya hanya tidak mengerti mengapa orang memilih untuk melakukannya dengan cara tertentu. Mengapa menggunakan single_post_title daripada the_title ()?
olliew