Obține linkurile paginii anterioare / următoare (fără titlu, <a> etc)
În prezent folosesc următoarea metodă pentru a obține un link către pagina anterioară / următoare a blogului:
<?php previous_post_link( '%link', '%title' ); ?>
Totuși, aceasta include elementul exterior, numele etc., eu vreau doar linkul, de exemplu http://domain.com/blog/page/2
Există vreo funcție pe care nu o văd pentru a-mi satisface cerințele?
Clarificare
- Aceasta este pentru următoarea pagină de blog (nu postare de blog)
- Vreau doar linkul, nu elementul ancoră
Mulțumesc mult

Răspuns scurt: get_previous_posts_page_link
este funcția pe care o căutați:
<?php if($url = get_previous_posts_page_link()): ?>
faci ceva cu $url
<?php endif; ?>
Răspuns detaliat: urmăriți codul.
previous_posts_link
apelează get_previous_posts_link
.
<?php
/**
* Afișează linkul către pagina anterioară de articole.
*
* @since 0.71
* @uses get_previous_posts_link()
*
* @param string $label Opțional. Textul pentru linkul către pagina anterioară.
*/
function previous_posts_link( $label = null ) {
echo get_previous_posts_link( $label );
}
get_previous_posts_link
apelează previous_posts
pentru a obține URI-ul linkului.
<?php
/**
* Returnează linkul către pagina anterioară de articole.
*
* @since 2.7.0
*
* @param string $label Opțional. Textul pentru linkul către pagina anterioară.
* @return string|null
*/
function get_previous_posts_link( $label = null ) {
global $paged;
if ( null === $label )
$label = __( '« Pagina Anterioară' );
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
este doar un wrapper simplu în jurul funcției pe care o căutați: get_previous_posts_page_link
<?php
/**
* Afișează sau returnează linkul către pagina anterioară de articole.
*
* @since 0.71
*
* @param boolean $echo Opțional. Afișează sau returnează;
*/
function previous_posts( $echo = true ) {
$output = esc_url( get_previous_posts_page_link() );
if ( $echo )
echo $output;
else
return $output;
}
Funcția pe care o căutăm:
<?php
/**
* Obține linkul către pagina anterioară de articole.
*
* Va returna doar un string, dacă nu este pe o pagină sau articol singular.
*
* Backportată la 2.0.10 din 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);
}
}
Am inclus toate acestea pentru a ilustra cum puteți găsi răspunsuri căutând prin codul sursă. Instrumente precum ack vă pot ajuta să începeți:
shell$ cd /calea/catre/instalarea/wordpress
shell$ ack "function previous_posts_link"
În general, WordPress este destul de bun în a asigura că o funcție face doar un lucru. Urmărirea de la funcții mai generale (cum ar fi previous_posts_link
și alte tag-uri de șablon) înapoi la funcții mai de bază este de obicei o metodă bună de a învăța câteva lucruri interesante și de a găsi răspunsul.

Dacă nu doriți alte elemente, puteți adăuga următorul cod în template-ul paginii din tema dumneavoastră. Linkurile vor fi atribuite variabilelor $prevID și $nextID, pe care le puteți folosi după preferințe.
<?php
$pagelist = get_pages('sort_column=menu_order&sort_order=asc');
$pages = array();
foreach ($pagelist as $page) {
$pages[] += $page->ID;
}
$current = array_search($post->ID, $pages);
$prevID = $pages[$current-1];
$nextID = $pages[$current+1];
?>

Pentru posteritate. previous_posts() și next_posts() vor face exact asta.
echo previous_posts( 0, false );
echo next_posts( 0, false );
