[オプション]で設定されたブログページURLを取得する


回答:


70

Sagiveの答えに基づいて構築するには、get_permalink()でIDをラップして実際のリンクを取得します。

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

25

WordPress 4.5以降では、次を使用できます。

get_post_type_archive_link( 'post' );

これは、投稿がホームページに表示されるか指定されたページに表示されるかに関係なく、正しいURLを取得するロジックを処理します。


4

パーマリンクを設定する前にオプションを確認する最良の方法は次のとおりです。

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

3

あなたは使用することができますget_optionpage_for_postsいずれかの変数に代入するか、あなたがそうしたいならば、それをエコーするページIDを取得します。

<?php $postsPageId = get_option('page_for_posts'); ?>
<a href="index.php?p=<?php echo $postsPageId; ?>">Our Blog</a>

defualt get_optionの詳細については、オプションリファレンスをご覧ください。


1

リンクをエコーする前にオプションをチェックする方が良いとヒュー・マンに同意しますが、静的ページをフロントページとして設定し、投稿ページを空のままにすることは可能です。この場合、リンクはホーム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_urlget_permalinkhome_url
Tolea Bivol
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.