我想要从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_option
的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访问:选项参考
#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