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

38

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?

Atif Mohammed Ameenuddin
la source

Réponses:

71

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>
Bill Erickson
la source
25

À 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.

Septième acier
la source
4

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

Vous pouvez utiliser get_optionof page_for_postspour 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 la visite de defualt get_option: Référence de l'option

Sagive SEO
la source
1

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 garde 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( '/' ) );
    }
}
Dmitry Mayorov
la source
Vous ne devez pas esc_urlles get_permalinket home_urlfonctions
Tolea Bivol