获取在选项中设置的博客页面URL


Answers:


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_optionof page_for_posts来获取页面ID,以将其分配给变量或在需要时回显它。

<?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_permalinkhome_url功能
Tolea Bivol
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.