ブログをホームページ以外の別のページに設定しました。
single.phpからこのブログページへのリンクが必要です。
ブログのURLを引き出す機能はありますか?
ブログをホームページ以外の別のページに設定しました。
single.phpからこのブログページへのリンクが必要です。
ブログの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
の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の詳細については、オプションリファレンスをご覧ください。
リンクをエコーする前にオプションをチェックする方が良いとヒュー・マンに同意しますが、静的ページをフロントページとして設定し、投稿ページを空のままにすることは可能です。この場合、リンクはホーム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