Obtener la URL de la página del blog configurada en Opciones

33

He configurado el blog para que sea una página diferente a la página de inicio.

Quiero tener un enlace de single.php a esta página del blog.

¿Hay alguna función que extraiga la URL del blog?

    
pregunta Atif Mohammed Ameenuddin 28.04.2012 - 11:56

5 respuestas

59

Para aprovechar la respuesta de Sagive, querrás envolver la ID en get_permalink () para obtener el enlace real.

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

A partir de WordPress 4.5 puedes usar:

get_post_type_archive_link( 'post' );

Esto controla la lógica de obtener la URL correcta independientemente de si las publicaciones se muestran en la página de inicio o en una página específica.

    
respondido por el SeventhSteel 03.04.2017 - 05:09
4

La mejor forma de marcar la opción antes de configurar el enlace permanente es la siguiente:

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

Puede usar get_option de page_for_posts para obtener el ID de la página para asignarlo a una variable o para repetirlo si lo desea.

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

Para obtener información adicional de la visita a la opción defualt get_option: Referencia de opción

    
respondido por el Sagive SEO 28.04.2012 - 13:46
1

Esté de acuerdo con Hugh Man en que es mejor marcar la opción antes de repetir el enlace, pero es posible establecer la página estática como una página de inicio y dejar la página de mensajes vacía. En este caso, el enlace solo apuntará a la URL de inicio. Un mejor enfoque es proporcionar un respaldo a la página de archivo de publicaciones. Algo como esto:

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

Lea otras preguntas en las etiquetas