Obtenga la URL de la página del blog establecida en Opciones

38

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 de blog.

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

Atif Mohammed Ameenuddin
fuente

Respuestas:

70

Para construir sobre la respuesta de Sagive, querrá ajustar la ID en get_permalink () para obtener el enlace real.

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

A partir de WordPress 4.5 puede usar:

get_post_type_archive_link( 'post' );

Esto maneja 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.

Séptimo Acero
fuente
4

La mejor manera de verificar 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>';
}
Hooman Askari
fuente
3

Se puede utilizar get_optionde page_for_postsobtener el ID de página a asignarlo a una variable o hacerse eco de que si desea hacerlo.

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

Para obtener información adicional sobre la visita get_option de defualt: Referencia de opciones

SEO sagivo
fuente
1

De acuerdo con Hugh Man en que es mejor marcar la opción antes de hacer eco del enlace, pero es posible configurar la página estática como página principal y dejar la página de publicaciones 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( '/' ) );
    }
}
Dmitry Mayorov
fuente
Usted no tiene que esc_urllos get_permalinky home_urllas funciones
Tolea Bivol