블로그를 홈페이지가 아닌 다른 페이지로 설정했습니다.
single.php에서이 블로그 페이지로 연결되는 링크를 갖고 싶습니다.
블로그의 URL을 가져 오는 기능이 있습니까?
블로그를 홈페이지가 아닌 다른 페이지로 설정했습니다.
single.php에서이 블로그 페이지로 연결되는 링크를 갖고 싶습니다.
블로그의 URL을 가져 오는 기능이 있습니까?
답변:
WordPress 4.5부터 다음을 사용할 수 있습니다.
get_post_type_archive_link( 'post' );
게시물이 홈페이지에 표시되는지 또는 지정된 페이지에 표시되는지에 관계없이 올바른 URL을 가져 오는 논리를 처리합니다.
영구 링크를 설정하기 전에 옵션을 확인하는 가장 좋은 방법은 다음과 같습니다.
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>';
}
get_option
of 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에 대한 추가 정보는 옵션 참조를 방문하십시오.
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