Obter o URL da página do blog definido em Opções

33

Eu defini o blog para ser uma página diferente da página inicial.

Eu quero ter um link de single.php para esta página do blog.

Existe alguma função que extraia URL para o blog?

    
por Atif Mohammed Ameenuddin 28.04.2012 / 11:56
fonte

5 respostas

59

Para construir a resposta de Sagive, você vai querer embrulhar o ID em get_permalink () para obter o link atual.

<a href="<?php echo get_permalink( get_option( 'page_for_posts' ) ); ?>">Our Blog</a>
    
por Bill Erickson 28.04.2012 / 18:19
fonte
16

A partir do WordPress 4.5, você pode usar:

get_post_type_archive_link( 'post' );

Isso lida com a lógica de obter o URL correto, independentemente de as postagens aparecerem na página inicial ou em uma página especificada.

    
por SeventhSteel 03.04.2017 / 05:09
fonte
4

A melhor maneira de verificar a opção antes de definir o permalink é a seguinte:

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>';
}
    
por Hooman Askari 02.05.2016 / 12:51
fonte
3

Você pode usar get_option de page_for_posts para obter o ID da página para atribuí-lo a uma variável ou para ecoá-lo, se desejar.

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

Para obter informações adicionais sobre a opção get_option defualt, consulte Referência de opções

    
por Sagive SEO 28.04.2012 / 13:46
fonte
1
Concorde com o Hugh Man que é melhor verificar a opção antes de fazer o eco do link, mas é possível definir a página estática como primeira página e deixar a página de posts vazia. Nesse caso, o link apontará apenas para o URL inicial. Uma abordagem melhor é fornecer um retorno à página de arquivamento de postagens. Algo parecido com isto:

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( '/' ) );
    }
}
    
por Dmitry Mayorov 07.06.2016 / 11:26
fonte