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?
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?
Respuestas:
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>
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.
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>';
}
Se puede utilizar get_option
de page_for_posts
obtener 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
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( '/' ) );
}
}
esc_url
losget_permalink
yhome_url
las funciones