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

33

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

Je souhaite créer un lien entre single.php et cette page de blog.

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

    
posée Atif Mohammed Ameenuddin 28.04.2012 - 11:56
la source

5 réponses

59

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>
    
réponse donnée Bill Erickson 28.04.2012 - 18:19
la source
16

À partir de WordPress 4.5, vous pouvez utiliser:

get_post_type_archive_link( 'post' );

Ceci gère la logique d'obtention de l'URL correcte, que les publications soient affichées sur la page d'accueil ou dans une page spécifiée.

    
réponse donnée SeventhSteel 03.04.2017 - 05:09
la source
4

La meilleure façon de vérifier l'option avant de définir le lien permanent 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>';
}
    
réponse donnée Hooman Askari 02.05.2016 - 12:51
la source
3

Vous pouvez utiliser get_option de 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 la méthode defualt get_option, visitez: Référence sur les options

.     
réponse donnée Sagive SEO 28.04.2012 - 13:46
la source
1

Convenez avec Hugh Man qu'il est préférable de cocher l'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 publications vide. Dans ce cas, le lien pointe simplement sur 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( '/' ) );
    }
}
    
réponse donnée Dmitry Mayorov 07.06.2016 - 11:26
la source

Lire d'autres questions sur les étiquettes