我已将博客设置为除主页以外的其他页面。

我想要从single.php到此博客页面的链接。

有没有为博客提取URL的功能?

#1 楼

要基于Sagive的答案,您需要将ID包装在get_permalink()中以获取实际的链接。

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


#2 楼

从WordPress 4.5开始,您可以使用:

get_post_type_archive_link( 'post' );


这处理获取正确URL的逻辑,而不管帖子是显示在首页还是指定页面中。 br />

#3 楼

设置永久链接之前检查选项的最佳方法如下:

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


#4 楼

您可以使用get_optionpage_for_posts来获取页面ID,以将其分配给变量或在需要时对其进行回显。

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


有关defualt get_option访问:选项参考

#5 楼

与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
17年4月7日在7:48