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?
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?
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>
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.
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>';
}
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
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( '/' ) );
}
}
Lea otras preguntas en las etiquetas functions permalinks theme-development