web-dev-qa-db-fra.com

Obtenir l'URL de la page de blog définie dans Options

J'ai défini le blog comme une page différente de la page d'accueil.

Je veux avoir un lien de single.php vers cette page de blog.

Existe-t-il une fonction permettant d'extraire l'URL du blog?

34

Pour compléter la réponse de Sagive, vous devrez envelopper l'ID dans get_permalink () pour obtenir le lien réel.

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

À partir de WordPress 4.5, vous pouvez utiliser:

get_post_type_archive_link( 'post' );

Cela gère la logique d'obtention de l'URL correcte, que les messages soient affichés sur la page d'accueil ou sur une page spécifiée.

20
SeventhSteel

La meilleure façon de vérifier l’option avant de définir le permalien est la suivante:

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

Vous pouvez utiliser get_option sur page_for_posts pour obtenir l'ID de page afin de l'affecter à une variable ou de lui donner un écho si vous le souhaitez.

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

Pour plus d'informations sur defualt get_option, visitez: Référence de l'option

3
Sagive SEO

En accord avec Hugh Man, il est préférable de cocher cette option avant de faire écho au lien, mais il est possible de définir la page statique en tant que page de couverture et de laisser la page des messages vide. Dans ce cas, le lien pointe simplement vers l'URL de la maison. Une meilleure approche consiste à fournir un repli sur la page d’archive des articles. Quelque chose comme ça:

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