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?
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?
Antworten:
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>
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.
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>';
}
Sie können get_option
of 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
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( '/' ) );
}
}
esc_url
dieget_permalink
undhome_url
Funktionen