Transmiterea argumentelor personalizate în paginate_links

2 iul. 2011, 20:46:45
Vizualizări: 16.7K
Voturi: 3

De exemplu, am domain.com/about?project=1 dar am permalink-uri activate și folosesc asta pentru a genera paginarea paginate_links. Problema este că linkurile generate arată astfel domain.com/about?project=1/page/1 și strică totul deoarece proiectul este interpretat ca 1/page/1.

Există o modalitate de a obține domain.com/about/project/1/page/1 în linkurile de paginare? Trimite aceste date dintr-un formular folosind metoda GET pentru a afișa proiectul.

0
Toate răspunsurile la întrebare 1
5

Pentru a adăuga argumente la linkurile din paginarea postărilor, folosește argumentul 'add_args' în funcție. Trebuie să transmiți argumentele ca un array asociativ. Deci, pentru a adăuga project=1 la sfârșitul tuturor linkurilor tale, ai face asta:

global $wp_query;
paginate_links(array(
  'total' => $wp_query->max_num_pages,
  'current' => (get_query_var('paged') ? get_query_var('paged') : 1),
  'base' => 'http://domain.com/about/%_%',
  'format' => 'page/%#%',
  'add_args' => array( 'project' => 1 /* sau orice alt număr de proiect este*/ ),
));

Sper că te-a ajutat!

EDITARE

Pentru a obține domain.com/about/projects/1/page/1, poți adăuga o structură personalizată de permalink. Presupun că about este o pagină.

function wpse21802_init(){
  add_rewrite_rule( '([^/]+)/projects/([^/])/?$', 'index.php?pagename=$matches[1]&project=$matches[2]', 'top' );
  add_rewrite_rule( '([^/]+)/projects/([^/])/page/(/d+)/?$', 'index.php?pagename=$matches[1]&project=$matches[2]&paged=$matches[3]', 'top' );
}
add_action( 'init', 'wpse21802_init' );

După adăugarea acestui cod, actualizează regulile de rescriere mergând la Setări -> Legături permanente.

2 iul. 2011 22:05:24
Comentarii

Dar asta generează http://domain.com/about/page/1?project=1

Sein Oxygen Sein Oxygen
2 iul. 2011 23:38:50

"Trim asta dintr-un formular folosind get pentru a afișa proiectul." Project este o variabilă $_GET în acel link, nu? 'add_args' => array( 'project' => absint($_GET['project'])

John P Bloch John P Bloch
3 iul. 2011 00:18:04

Da, dar din nou citește întrebarea principală: Există vreo metodă de a obține domain.com/about/project/1/page/1 în link-urile de paginare? Trim asta dintr-un formular folosind get pentru a afișa proiectul.

Sein Oxygen Sein Oxygen
3 iul. 2011 05:29:52

Am actualizat răspunsul meu, dar aș dori să subliniez că WordPress suportă deja acea structură URL doar prin utilizarea ierarhiei paginilor.

John P Bloch John P Bloch
3 iul. 2011 15:43:57

Sau 'add_args' => array( '#mydiv') dacă doriți ca click-ul pe link să deruleze la un div, de exemplu.

Tim Hallman Tim Hallman
6 feb. 2020 23:28:13