it-swarm.com.de

Rufen Sie die URL der Blog-Seite ab, die in den Optionen festgelegt wurde

Ich habe festgelegt, dass das Blog eine andere Seite als die Startseite ist.

Ich möchte einen Link von single.php zu dieser Blog-Seite haben.

Gibt es eine Funktion, die eine URL für das Blog abruft?

Um auf Sagives Antwort aufzubauen, müssen Sie die ID in get_permalink () einschließen, um den tatsächlichen Link zu erhalten.

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

Ab WordPress 4.5 können Sie verwenden:

get_post_type_archive_link( 'post' );

Dies übernimmt die Logik, die richtige URL abzurufen, unabhängig davon, ob Beiträge auf der Startseite oder auf einer bestimmten Seite angezeigt werden.

20
SeventhSteel

Die beste Möglichkeit, die Option vor dem Festlegen des Permalinks zu aktivieren, ist wie folgt:

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
Hooman Askari

Sie können get_option of page_for_posts verwenden, um die Seiten-ID abzurufen, um sie entweder einer Variablen zuzuweisen oder um sie zu wiederholen, wenn Sie dies möchten.

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

Weitere Informationen zur Standardeinstellung get_option finden Sie unter: Option Reference

3
Sagive SEO

Stimmen Sie mit Hugh Man überein, dass es besser ist, die Option zu aktivieren, bevor Sie den Link wiedergeben. Es ist jedoch möglich, die statische Seite als Startseite festzulegen und die Postseite leer zu lassen. In diesem Fall verweist der Link nur auf die Home-URL. Ein besserer Ansatz ist die Bereitstellung eines Fallbacks auf der Seite für das Postarchiv. Etwas wie das:

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( '/' ) );
    }
}
1
Dmitry Mayorov