Dapatkan URL halaman blog diatur dalam Opsi

38

Saya telah menetapkan blog menjadi halaman lain selain halaman utama.

Saya ingin memiliki tautan dari single.php ke halaman blog ini.

Apakah ada fungsi yang menarik URL untuk blog?

Atif Mohammed Ameenuddin
sumber

Jawaban:

70

Untuk membangun jawaban Sagive, Anda ingin membungkus ID di get_permalink () untuk mendapatkan tautan yang sebenarnya.

<a href="<?php echo get_permalink( get_option( 'page_for_posts' ) ); ?>">Our Blog</a>
Bill Erickson
sumber
25

Pada WordPress 4.5 Anda dapat menggunakan:

get_post_type_archive_link( 'post' );

Ini menangani logika untuk mendapatkan URL yang benar terlepas dari apakah posting muncul di beranda atau di halaman yang ditentukan.

Baja Ketujuh
sumber
4

Cara terbaik untuk memeriksa opsi sebelum menyetel permalink adalah sebagai berikut:

if ( get_option( 'page_for_posts' ) ) {
   echo '<a href="'.esc_url(get_permalink( get_option( 'page_for_posts' ) )).'">'.esc_html__( 'Blog', 'textdomain' ).'</a>';
} else {
   echo '<a href="'.esc_url( home_url( '/' ) ).'">'.esc_html__( 'Blog', 'textdomain' ).'</a>';
}
Hooman Askari
sumber
3

Anda dapat menggunakan get_optiondari page_for_postsuntuk mendapatkan ID halaman untuk menetapkannya ke variabel atau untuk menggemakannya jika Anda ingin melakukannya.

<?php $postsPageId = get_option('page_for_posts'); ?>
<a href="index.php?p=<?php echo $postsPageId; ?>">Our Blog</a>

Untuk informasi tambahan tentang kunjungan get_option defualt: Referensi Opsi

SEO yang sombong
sumber
1

Setuju dengan Hugh Man bahwa lebih baik untuk memeriksa opsi sebelum menggemakan tautan, tetapi dimungkinkan untuk mengatur halaman statis sebagai halaman depan dan membiarkan halaman posting kosong. Dalam hal ini, tautan hanya akan mengarah ke URL beranda. Pendekatan yang lebih baik adalah memberikan fallback ke halaman arsip posting. Sesuatu seperti ini:

function slug_all_posts_link() {
    if ( 'page' == get_option( 'show_on_front' ) ) {
        if ( get_option( 'page_for_posts' ) ) {
            echo esc_url( get_permalink( get_option( 'page_for_posts' ) ) );
        } else {
            echo esc_url( home_url( '/?post_type=post' ) );
        }
    } else {
        echo esc_url( home_url( '/' ) );
    }
}
Dmitry Mayorov
sumber
Anda tidak harus esc_urldengan get_permalinkdan home_urlfungsi
Tolea Bivol