Cum să utilizez pre_get_posts pentru a seta numărul de articole pe pagină?

2 apr. 2012, 18:12:28
Vizualizări: 16.4K
Voturi: 5

Încerc să utilizez pre_get_posts pentru a seta numărul de articole pe pagină pentru un anumit termen dintr-o taxonomie. Un lucru care mă derutează este setarea termenului căruia să i se aplice pre_get_posts.

Iată codul meu:

function filter_press_tax( $query ){
if( $query->query_vars['tax_query']['taxonomy'] == 'press' && $query->query_vars['tax_query']['terms'][0] == 'press' ):
    $query->query_vars['posts_per_page'] = 5;
    return;
endif;
}//end filter_press_tax

Nu înțeleg pe deplin cum să accesez taxonomia și termenul în $query. Da, taxonomia și termenul au același nume. Este aceasta o idee proastă? Nu am un query personalizat configurat în template-ul taxonomy-press-press.php pentru 'tax_query' - este aceasta problema?

Orice ajutor este apreciat! Mulțumesc

0
Toate răspunsurile la întrebare 1
4
16

Ești aproape gata, încearcă asta.

<?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;
    }
?>

Poți folosi orice tag condițional sau orice argument care poate fi transmis către WP_Query pentru a testa condiția ta sau pentru a seta o nouă valoare prin intermediul pre_get_posts. De asemenea, încearcă $query->get('taxonomy') / $query->get('term'). Și verifică acest link pentru metodele set și get ale $query.

2 apr. 2012 18:30:10
Comentarii

Mulțumesc pentru asta! Funcția is_tax funcționează perfect, dar încă nu pot seta termenul. has_term aruncă o eroare și folosirea get('term') nu aplică numărul de postări pe pagină. Am încercat să folosesc get('term') == slug, id și valori ale numelui, dar fără succes. Apoi am încercat și $query->query_vars['term'], tot fără succes. Cred că încă îmi scapă ceva. M-am uitat în obiectul $query stdClass aici: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts și nu văd o valoare 'term' sau has_term în listă. Funcționează atâta timp cât nu încerc să setez termenul. Ciudat.

dkmojo dkmojo
3 apr. 2012 01:15:43

Cu plăcere! Vrei să setezi termenul? Lasă-mă să mă uit și să văd cum se poate face.

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

Mulțumesc! Funcționează bine momentan, iar celălalt termen din taxonomia press, numit recenzii online, nu este afectat prea mult. Aștept cu interes orice ai putea găsi care ar putea fi de ajutor. :)

dkmojo dkmojo
3 apr. 2012 18:21:42

Bun venit înapoi! Momentan nu am la îndemână o configurație CPT/taxonomie, așa că nu am putut să o testez. Cu siguranță voi testa de îndată ce voi seta lucrurile și voi actualiza aici. :D

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