รับ URL หน้าบล็อกในตัวเลือก


38

ฉันได้ตั้งค่าบล็อกให้เป็นหน้าอื่นที่ไม่ใช่หน้าแรก

ฉันต้องการลิงค์จาก single.php ไปยังหน้าบล็อกนี้

มีฟังก์ชั่นใดที่ดึง URL สำหรับบล็อกหรือไม่

คำตอบ:


70

เพื่อสร้างคำตอบของ Sagive คุณจะต้องใส่ ID ใน get_permalink () เพื่อรับลิงค์จริง

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

25

ในฐานะของ WordPress 4.5 คุณสามารถใช้:

get_post_type_archive_link( 'post' );

สิ่งนี้จะจัดการตรรกะของการรับ URL ที่ถูกต้องไม่ว่าจะมีโพสต์ปรากฏในหน้าแรกหรือในหน้าที่ระบุ


4

วิธีที่ดีที่สุดในการตรวจสอบตัวเลือกก่อนการตั้งค่าลิงก์จะเป็นดังนี้:

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>';
}

3

คุณสามารถใช้get_optionของpage_for_postsที่จะได้รับหมายเลขหน้าไปทั้งกำหนดให้ตัวแปรหรือเพื่อสะท้อนถ้าคุณต้องการที่จะทำเช่นนั้น

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

สำหรับข้อมูลเพิ่มเติมของการเยี่ยมชม defualt get_option: การอ้างอิงตัวเลือก


1

เห็นด้วยกับ Hugh Man ว่าเป็นการดีกว่าที่จะตรวจสอบตัวเลือกก่อนที่จะสะท้อนลิงค์ แต่ก็เป็นไปได้ที่จะตั้งค่าหน้าสแตติกเป็นหน้าแรก ในกรณีนี้ลิงก์จะชี้ไปที่ URL ที่บ้าน วิธีที่ดีกว่าคือการให้ทางเลือกในหน้าคลังบทความ บางสิ่งเช่นนี้

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( '/' ) );
    }
}

คุณไม่ต้องesc_urlใช้ฟังก์ชั่นget_permalinkและhome_urlฟังก์ชั่น
Tolea Bivol
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.