私はブログをホームページ以外の別のページに設定しました。
私はsingle.phpからこのブログページへのリンクを持ちたいです。
ブログのURLを取り出す機能はありますか?
Sagiveの答えを基にするには、実際のリンクを取得するためにget_permalink()でIDをラップします。
<a href="<?php echo get_permalink( get_option( 'page_for_posts' ) ); ?>">Our Blog</a>
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>';
}
ページIDを取得するためにget_option
のpage_for_posts
を使用すると、それを変数に割り当てることも、必要に応じてエコーすることもできます。
<?php $postsPageId = get_option('page_for_posts'); ?>
<a href="index.php?p=<?php echo $postsPageId; ?>">Our Blog</a>
デフォルトのget_optionの詳細については、次のWebサイトを参照してください。 オプションリファレンス
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( '/' ) );
}
}