Holen Sie sich die URL der Blog-Seite in den Optionen

38

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?

Atif Mohammed Ameenuddin
quelle

Antworten:

70

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>
Bill Erickson
quelle
25

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.

SeventhSteel
quelle
4

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

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>';
}
Hooman Askari
quelle
3

Sie können get_optionof verwenden page_for_posts, um die Seiten-ID abzurufen, um sie entweder einer Variablen zuzuweisen oder 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 des defualt get_option Besuch: Option Referenz

Sagive SEO
quelle
1

Stimmen Sie dem Hugh Man zu, 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 es, einen Fallback auf die Seite mit dem Beitragsarchiv bereitzustellen. 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( '/' ) );
    }
}
Dmitry Mayorov
quelle
Sie müssen nicht esc_urldie get_permalinkund home_urlFunktionen
Tolea Bivol