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

时间:2012-04-28 作者:Atif

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

我想有一个单曲的链接。php访问此博客页面。

是否有任何函数可以为博客提取URL?

5 个回复
最合适的回答,由SO网友:SeventhSteel 整理而成

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

get_post_type_archive_link( \'post\' );
这将处理获取正确URL的逻辑,而不管帖子是显示在主页上还是显示在指定页面中。

SO网友:Bill Erickson

要基于Sagive的答案,您需要将ID包装在get\\u permalink()中,以获得实际的链接。

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

SO网友:Hooman Askari

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

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

SO网友:Sagive

您可以使用get_option 属于page_for_posts 获取页面ID,以便将其分配给变量,或者在需要时回显它。

<?php $postsPageId = get_option(\'page_for_posts\'); ?>
<a href="index.php?p=<?php echo $postsPageId; ?>">Our Blog</a>
有关defalt get\\u选项的更多信息,请访问:Option Reference

SO网友:Dmitry Mayorov

同意Hugh Man的观点,在回显链接之前最好选中该选项,但可以将静态页面设置为首页,并将帖子页面留空。在这种情况下,链接将只指向主URL。一种更好的方法是提供对posts归档页面的回退。类似这样:

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

结束