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

38

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

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

Existe alguma função que extrai o URL do blog?

Atif Mohammed Ameenuddin
fonte

Respostas:

70

Para aproveitar a resposta do Sagive, você deve agrupar o ID em get_permalink () para obter o link real.

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

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.

SeventhSteel
fonte
4

A melhor maneira de verificar a opção antes de definir o link permanente é 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>';
}
Hooman Askari
fonte
3

Você pode usar get_optionde page_for_postspara obter o ID da página, quer atribuí-la a uma variável ou a eco-lo se você deseja fazê-lo.

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

Para obter informações adicionais da visita get_option padrão: Referência de opção

Sagive SEO
fonte
1

Concorde com o Hugh Man que é melhor marcar a opção antes de repetir o link, mas é possível definir a página estática como primeira página e deixar a página de postagens vazia. Nesse caso, o link apontará apenas para o URL inicial. Uma abordagem melhor é fornecer um fallback para a página de arquivamento de postagens. Algo assim:

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
fonte
Você não tem que esc_urlos get_permalinke home_urlfunções
Tolea Bivol