Nhận URL trang blog được đặt trong Tùy chọn


Câu trả lời:


70

Để xây dựng câu trả lời của Sagive, bạn sẽ muốn bọc ID trong get_permalink () để có được liên kết thực tế.

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

25

Kể từ WordPress 4.5, bạn có thể sử dụng:

get_post_type_archive_link( 'post' );

Điều này xử lý logic nhận URL chính xác bất kể bài đăng có hiển thị trên trang chủ hoặc trong một trang được chỉ định hay không.


4

Cách tốt nhất để kiểm tra tùy chọn trước khi cài đặt permalink như sau:

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

Bạn có thể sử dụng get_optioncủa page_for_postsđể có được ID trang hoặc là gán nó vào một biến hoặc để echo nó nếu bạn muốn làm như vậy.

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

Để biết thêm thông tin về chuyến thăm get_option không xác định: Tham khảo tùy chọn


1

Đồng ý với Hugh Man rằng tốt hơn là kiểm tra tùy chọn trước khi lặp lại liên kết, nhưng có thể đặt trang tĩnh làm trang đầu và để trống trang bài viết. Trong trường hợp này, liên kết sẽ chỉ đến URL nhà. Một cách tiếp cận tốt hơn là cung cấp dự phòng cho trang lưu trữ bài viết. Một cái gì đó như thế này:

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

Bạn không cần phải esc_urlsự get_permalinkhome_urlchức năng
Tolea Bivol
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.