Come utilizzare pre_get_posts per impostare i post per pagina?

2 apr 2012, 18:12:28
Visualizzazioni: 16.4K
Voti: 5

Sto cercando di utilizzare pre_get_posts per impostare il numero di post per pagina per un singolo termine all'interno di una tassonomia. Una cosa che mi confonde è come impostare il termine a cui applicare il filtro pre_get_posts.

Ecco il mio codice:

function filter_press_tax( $query ){
// Verifica se la query è per la tassonomia 'press' e il termine 'press'
if( $query->query_vars['tax_query']['taxonomy'] == 'press' && $query->query_vars['tax_query']['terms'][0] == 'press' ):
    // Imposta il numero di post per pagina a 5
    $query->query_vars['posts_per_page'] = 5;
    return;
endif;
}//end filter_press_tax

Non capisco bene come accedere alla tassonomia e al termine nell'oggetto $query. Sia la tassonomia che il termine hanno lo stesso nome. È una cattiva idea? Non ho una query personalizzata impostata nel template taxonomy-press-press.php per il 'tax_query' - è questo il problema?

Ogni aiuto è apprezzato! Grazie

0
Tutte le risposte alla domanda 1
4
16

Ci sei quasi amico. Prova però questo.

<?php
    add_action('pre_get_posts', 'filter_press_tax');

    function filter_press_tax( $query ){
        if( $query->is_tax('press') && $query->has_term('press')):
            $query->set('posts_per_page', 5);
            return;
        endif;
    }
?>

Puoi usare qualsiasi tag condizionale o qualsiasi argomento che può essere passato a WP_Query per testare la tua condizione o impostare un nuovo valore tramite pre_get_posts. Prova anche $query->get('taxonomy') / $query->get('term'). E controlla questo per i metodi set e get di $query.

2 apr 2012 18:30:10
Commenti

Grazie per questo! La funzione is_tax funziona perfettamente, ma ancora non riesco a impostare il termine. has_term restituisce un errore e utilizzare get('term') non applica i post per pagina. Ho provato a usare get('term') == slug, id e valori del nome ma senza successo. Poi ho provato anche $query->query_vars['term'] senza fortuna. Devo ancora aver perso qualcosa. Ho esaminato l'oggetto stdClass $query qui: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts e non vedo un valore 'term' o has_term nella lista. Funziona finché non provo a impostare il termine. Strano.

dkmojo dkmojo
3 apr 2012 01:15:43

Prego! Vuoi impostare il termine? Fammi dare un'occhiata e vediamo come si può fare.

Rutwick Gangurde Rutwick Gangurde
3 apr 2012 06:53:39

Grazie! Per il momento funziona bene e l'altro termine nella tassonomia press, chiamato online reviews, non è troppo influenzato. Non vedo l'ora di vedere se troverai qualcosa che potrebbe essere utile. :)

dkmojo dkmojo
3 apr 2012 18:21:42

Bentornato! Al momento non ho a disposizione una configurazione CPT/tassonomia, quindi non ho potuto testarlo. Ma lo farò sicuramente non appena avrò impostato tutto e aggiornerò qui. :D

Rutwick Gangurde Rutwick Gangurde
3 apr 2012 19:32:56