Obtener solo los enlaces de página anterior/siguiente (sin título, <a> etc)
Actualmente uso el siguiente método para obtener un enlace de página anterior/siguiente del blog:
<?php previous_post_link( '%link', '%title' ); ?>
Sin embargo, esto incluye el elemento exterior, nombre, etc. Solo quiero el enlace, por ejemplo: http://domain.com/blog/page/2
¿Hay alguna función que no esté viendo que se ajuste a mis requisitos?
Aclaración
- Esto es para la siguiente página del blog (no para entradas del blog)
- Solo quiero el enlace, no el elemento anchor
Muchas gracias

Respuesta corta: get_previous_posts_page_link
es la función que necesitas:
<?php if($url = get_previous_posts_page_link()): ?>
haz algo con $url
<?php endif; ?>
Respuesta más detallada: sigue el código.
previous_posts_link
llama a get_previous_posts_link
.
<?php
/**
* Muestra el enlace a la página anterior de posts.
*
* @since 0.71
* @uses get_previous_posts_link()
*
* @param string $label Opcional. Texto del enlace a la página anterior.
*/
function previous_posts_link( $label = null ) {
echo get_previous_posts_link( $label );
}
get_previous_posts_link
llama a previous_posts
para obtener la URI del enlace.
<?php
/**
* Devuelve el enlace a la página anterior de posts.
*
* @since 2.7.0
*
* @param string $label Opcional. Texto del enlace a la página anterior.
* @return string|null
*/
function get_previous_posts_link( $label = null ) {
global $paged;
if ( null === $label )
$label = __( '« Página Anterior' );
if ( !is_single() && $paged > 1 ) {
$attr = apply_filters( 'previous_posts_link_attributes', '' );
return '<a href="' . previous_posts( false ) . "\" $attr>". preg_replace( '/&([^#])(?![a-z]{1,8};)/i', '&$1', $label ) .'</a>';
}
}
previous_posts
es simplemente un envoltorio alrededor de la función que estás buscando: get_previous_posts_page_link
<?php
/**
* Muestra o devuelve el enlace a la página anterior de posts.
*
* @since 0.71
*
* @param boolean $echo Opcional. Mostrar o devolver;
*/
function previous_posts( $echo = true ) {
$output = esc_url( get_previous_posts_page_link() );
if ( $echo )
echo $output;
else
return $output;
}
La función que queremos:
<?php
/**
* Recupera el enlace a la página anterior de posts.
*
* Solo devolverá una cadena si no está en una página o entrada única.
*
* Retrocompatible con 2.0.10 desde 2.1.3.
*
* @since 2.0.10
*
* @return string|null
*/
function get_previous_posts_page_link() {
global $paged;
if ( !is_single() ) {
$nextpage = intval($paged) - 1;
if ( $nextpage < 1 )
$nextpage = 1;
return get_pagenum_link($nextpage);
}
}
Incluí todo eso para ilustrar cómo puedes encontrar respuestas revisando el núcleo de WordPress. Herramientas como ack pueden ayudarte a empezar:
shell$ cd /ruta/a/tu/instalacion/wordpress
shell$ ack "function previous_posts_link"
En general, WordPress es bastante bueno asegurándose de que una función solo haga una cosa. Rastrear desde funciones más amplias (como previous_posts_link
y otras etiquetas de plantilla) hasta funciones más básicas suele ser una buena manera de aprender cosas interesantes y encontrar tu respuesta.

Si no deseas ningún otro elemento, puedes añadir el siguiente código a la plantilla de página de tu tema. Tus enlaces serán asignados a $prevID y $nextID, con los que podrás hacer lo que quieras.
<?php
// Obtener lista de páginas ordenadas por menú
$pagelist = get_pages('sort_column=menu_order&sort_order=asc');
$pages = array();
foreach ($pagelist as $page) {
$pages[] += $page->ID;
}
// Buscar la página actual en el array
$current = array_search($post->ID, $pages);
$prevID = $pages[$current-1]; // ID de la página anterior
$nextID = $pages[$current+1]; // ID de la página siguiente
?>

Para la posteridad. previous_posts() y next_posts() harán exactamente eso.
echo previous_posts( 0, false );
echo next_posts( 0, false );
