Passare argomenti personalizzati in paginate_links

2 lug 2011, 20:46:45
Visualizzazioni: 16.7K
Voti: 3

Ad esempio ho domain.com/about?project=1 ma ho i permalink attivati e sto usando questo per generare la paginazione paginate_links. Il problema è che i link generati sono così domain.com/about?project=1/page/1 e rompe tutto perché il progetto viene preso come 1/page/1

C'è un modo per ottenere domain.com/about/project/1/page/1 nei link di paginazione? Sto inviando questo da un form usando GET per visualizzare il progetto.

0
Tutte le risposte alla domanda 1
5

Per aggiungere argomenti ai link nella paginazione dei post, utilizza l'argomento 'add_args' nella funzione. Devi passare gli argomenti come un array associativo. Quindi, per aggiungere project=1 alla fine di tutti i tuoi link, dovresti fare così:

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 /* oppure qualunque sia il numero del progetto */ ),
));

Spero che questo ti sia stato utile!

MODIFICA

Per ottenere domain.com/about/projects/1/page/1, puoi aggiungere un permastruct personalizzato. Assumerò che about sia una pagina.

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' );

Dopo aver aggiunto questo codice, aggiorna le regole di riscrittura andando su Impostazioni -> Permalink.

2 lug 2011 22:05:24
Commenti

Ma questo genera http://domain.com/about/page/1?project=1

Sein Oxygen Sein Oxygen
2 lug 2011 23:38:50

"Lo invio da un form usando get per visualizzare il progetto." Project è una variabile $_GET in quel link, giusto? 'add_args' => array( 'project' => absint($_GET['project'])

John P Bloch John P Bloch
3 lug 2011 00:18:04

Sì, ma rileggi la domanda principale: C'è un modo per ottenere domain.com/about/project/1/page/1 nei link di paginazione? Lo invio da un form usando get per visualizzare il progetto.

Sein Oxygen Sein Oxygen
3 lug 2011 05:29:52

Ho aggiornato la mia risposta, ma vorrei anche far notare che WordPress supporta già quella struttura di URL semplicemente utilizzando la gerarchia delle pagine.

John P Bloch John P Bloch
3 lug 2011 15:43:57

Oppure 'add_args' => array( '#mydiv') se vuoi che il click sul link scorra fino a un div, ad esempio.

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