Usando wp_query è possibile ordinare per tassonomia?


49

La mia domanda è semplice, sto usando WP_Query per recuperare alcuni tipi di messaggi personalizzati filtrando per tassonomia usando tax_query.

Ora il mio problema è che vorrei ordinare per tassonomia, ma dalla documentazione e dalla ricerca sul web non riesco a trovare una soluzione.

L'ordine in WP_Query ti consente di ordinare da un sacco di campi anche meta campi personalizzati ma non sembra supportare la tassonomia.

Qualche puntatore nella giusta direzione?

Grazie a tutti.

Risposte:


12

No, non è possibile ordinare in base alla tassonomia, perché da un certo punto di vista non ha molto senso.

Le tassonomie sono modi per raggruppare le cose. Quindi il punto di avere una tassonomia sui posti sarebbe davvero di avere termini in quella tassonomia condivisi tra i messaggi. Se una tassonomia avesse termini usati solo su un posto ciascuno, ciò renderebbe la tassonomia un po 'inutile. E se i termini fossero condivisi come dovrebbero essere, ordinarli non produrrebbe nulla di particolarmente utile.

Quello che dovresti usare in una situazione del genere è il post meta. Puoi ordinare per meta post, ed è unico per ogni post.

Modifica: Detto questo, è possibile ordinare per tassonomia eseguendo una query SQL personalizzata utilizzando un filtro, non è possibile farlo da una WP_Query non modificata: http://scribu.net/wordpress/sortable-taxonomy-columns.html

Tuttavia, se devi ricorrere a questo genere di cose, allora la tua struttura di progettazione dei dati è errata in primo luogo. I "termini" nella tassonomia non sono veri e propri "dati". I termini stessi non hanno alcun significato intrinseco, sono solo etichette per il particolare raggruppamento che stanno descrivendo. Se li stai trattando come dati significativi, allora hai un difetto di progettazione sottostante.

Le tassonomie raggruppano le cose assegnando loro dei termini. Quel raggruppamento è il punto centrale delle tassonomie, i termini sono solo dei bei volti del raggruppamento. Se hai metadati significativi da assegnare a un post, dovresti invece utilizzare il meta meta per esso. E che puoi ordinare, perché post meta utilizza sia chiavi che valori per archiviare informazioni. Con una tassonomia, in realtà stai solo memorizzando le chiavi, con i loro valori sono i post raggruppati per quel termine.

Le cose sono più facili a lungo termine se si utilizza l'approccio corretto per questo. Anche se non sto dicendo che non puoi fare qualcosa di strano con la tassonomia, stai solo rendendo le cose più difficili per te a lungo termine, usando in modo sbagliato.


Ciao Otto, grazie per la risposta. Vedo il tuo punto e forse sto andando nella direzione sbagliata. Nel mio esempio un sito di spettacoli televisivi, ho tassonomia per serie 1, serie 2, serie 3 ecc. Quindi posso raggruppare tutti i diversi programmi televisivi per numero di serie. Poi ho lo stesso per episodi, episodio 01, episodio 02, ecc. Quello che mi piacerebbe è mostrare un elenco di tutti gli episodi da ordinare per episodio e serie. Analizzerò quindi post meta e campi personalizzati. Grazie Otto.
Sì,

@yeope la tua tassonomia dovrebbe essere una serie e i tuoi termini dovrebbero essere una serie 1, una serie 2 ecc. Con gli episodi suppongo che una serie contenga più episodi in modo che possa usare la stessa tassonomia, "serie" e se sono gerarchici allora episodio 1, l'episodio 2 ecc. avrebbe il termine genitore "serie x". Quindi potresti interrogare un'intera serie in ordine con gli episodi che si allineano dove dovrebbero.
Chris_O

@Chris_O Capisco, potresti essere lì con i soldi! L'unico problema che posso vedere è il fatto di dover ripetere i termini "Episodio 1", "Episodio 2" per ogni serie. Inoltre, non essere in grado di raggruppare tutti gli episodi 1 a seconda della serie, ma penso che probabilmente ci sia un modo per aggirarlo. Grazie Chris_O
yeope

2
L'uso di una tassonomia per gli episodi non ha molto senso, in realtà, perché il raggruppamento non ha valore. Pensaci, se hai "episodio 1" come termine, allora stai raggruppando l'episodio 1 con ogni altro episodio 1 di ogni altro programma TV. I numeri di episodi e serie hanno più senso come post_meta, perché sono specifici per quel particolare spettacolo e non utili come gruppo. Il nome del programma televisivo sarebbe utile come termine in una tassonomia di un programma televisivo, perché poi stai raggruppando lo spettacolo nel suo insieme.
Otto,

1
Otto lo ha seguito con un interessante post sul blog: quando (non) usare una tassonomia personalizzata .
Jan Fabry,

47

La risposta accettata per questa domanda è inaccettabile. È illogico supporre che l'ordinamento fiscale "non abbia senso". La risposta che ha dato non ha senso.

Considera di avere un tipo di post di menu. Quindi hai una tassa personalizzata di "FoodCategories". La tassa FoodCategories ha i termini "Colazione", "Pranzo" e "Cena". Se invii una query utilizzando il parametro tax_query, ora hai un set di risultati con tutti i termini, tuttavia sono ordinati per data postale.

Per ottenere l'ordine corretto da questi, relativamente ai loro termini, e quindi per visualizzarsi sul front-end in modo appropriato separando i post nelle loro varie categorie, è necessario scorrere il set di risultati, quindi interrogare ogni singolo post all'interno del set di risultati per trovare i termini e confrontarli con il termine corrente, filtrare in un array e continuare per tutto. Quindi è necessario ripetere il ciclo attraverso il nuovo array per la visualizzazione. Questo non è produttivo.

Sarebbe bello se WP avesse un'opzione d'ordine "tax__in" in quanto fa un'opzione "post__in", ma dato che non lo è, devi anche fare il processo ridicolo sopra; personalizza tu stesso la query tramite il filtro 'posts_orderby' e il filtro 'posts_join' per adattare il metodo orderby e aggiungere il termine al set di risultati, rispettivamente; oppure devi creare una nuova query per ogni termine per il quale stai filtrando all'interno delle sezioni html relative a tali termini.

Il più efficace sarebbe cambiare la stringa di query tramite filtri. Il più semplice sarebbe fare tre query separate. L'API WP dovrebbe gestire l'ordinamento fiscale o qualsiasi parametro di query restrittivo. Se si sta limitando una query in base a determinate condizioni, esiste un'alta probabilità che molti avranno bisogno di ordinare in base alle stesse condizioni.


2
Scusa, ma ti sbagli. Ordinare per tassonomia non ha alcun senso neanche nel tuo caso. Che cosa vuoi mostrare? Prima tutte le colazioni, seguite da tutte le cene, poi tutti i pranzi? È necessario selezionare ciò che si desidera e l'ordine in cui lo si desidera, ma la tassonomia è solo un'etichetta di raggruppamento. Non sono "dati" significativi che dovresti ordinare. Se lo è, allora non dovrebbe essere un termine in una tassonomia, dovresti invece renderlo un post-meta.
Otto,

15
Dai, ovviamente ci saranno alcuni casi in cui vorrai ordinare i post per termine di tassonomia. Un altro esempio è un tipo di post di film con una tassonomia di valutazione. In un elenco di film, è molto facile immaginare le persone che vogliono ordinare un elenco di film in base alla valutazione in modo che tutti i film classificati in G, quindi in PG, ecc. Vengano visualizzati in alto. (In questo e nell'esempio del pasto potrebbero essere ordinati per term_id anziché per nome.) C'è una vasta area grigia di casi in cui probabilmente sei meglio servito da una tassonomia e non da meta, ma probabilmente è anche utile che quella tassonomia sia ordinata -abile.
Settimo acciaio,

2
Le classificazioni PG e G e simili sono una buona scelta di tassonomia, tranne per il fatto che sono dati su film specifici. Quindi sono meta. Sono dati, non categorie. Avere un numero limitato di scelte non fa una tassonomia. Se ha bisogno di ordinare per, quindi renderlo meta o forzare l'ordinamento per tassonomia tramite codice specifico di tassonomia. A proposito, NC17 viene dopo PG. Quindi, è necessario il codice per eseguire comunque l'ordinamento.
Otto,

So di essere in ritardo alla festa con questo commento, ma mi sono appena imbattuto in questo. Ordinare per tassonomia può avere senso in alcune situazioni. Abbiamo elenchi di lavori su un progetto come tipo di posta e quindi Stato e Città in cui il lavoro è tassonomie. Vogliamo che siano facilmente recuperabili (mostra tutti i lavori in uno stato o mostra tutti i lavori in una città), quindi la tassonomia era la soluzione migliore. Allo stesso tempo c'è una ricerca di lavoro generale in cui vogliamo ordinarli prima per titolo, poi per stato, quindi per città.
Dennis Puzak,

Un altro caso d'uso: un cliente ha un sacco di articoli, ognuno dei quali ha una categoria. Il cliente vuole che ci sia una pagina che elenca tutti gli articoli, che possono essere ordinati alfabeticamente, per data o per categoria. Le categorie possono anche essere filtrate, ma elencare tutti gli articoli per categoria in ordine alfabetico non è così folle come un caso d'uso e lo vedi apparire abbastanza spesso.
Wilson Biggs,

15

Sì, ma è piuttosto coinvolto ...

Aggiungi a Functions.php nel tuo tema:

function orderby_tax_clauses( $clauses, $wp_query ) {
    global $wpdb;
    $taxonomies = get_taxonomies();
    foreach ($taxonomies as $taxonomy) {
        if ( isset( $wp_query->query['orderby'] ) && $taxonomy == $wp_query->query['orderby'] ) {
            $clauses['join'] .=<<<SQL
LEFT OUTER JOIN {$wpdb->term_relationships} ON {$wpdb->posts}.ID={$wpdb->term_relationships}.object_id
LEFT OUTER JOIN {$wpdb->term_taxonomy} USING (term_taxonomy_id)
LEFT OUTER JOIN {$wpdb->terms} USING (term_id)
SQL;
            $clauses['where'] .= " AND (taxonomy = '{$taxonomy}' OR taxonomy IS NULL)";
            $clauses['groupby'] = "object_id";
            $clauses['orderby'] = "GROUP_CONCAT({$wpdb->terms}.name ORDER BY name ASC) ";
            $clauses['orderby'] .= ( 'ASC' == strtoupper( $wp_query->get('order') ) ) ? 'ASC' : 'DESC';
        }
    }
    return $clauses;
}

    add_filter('posts_clauses', 'orderby_tax_clauses', 10, 2 );

Questo è onesto da alcune cose trovate e alcune cose che ho fatto da solo. Spiegare è piuttosto difficile, ma la linea di fondo è con questa corsa, puoi mettere? Orderby = (tassonomia query var) & order = ASC (o DESC) e lei decollerà subito!


Grazie Drew, proverò e proverò a eseguire quell'SQL, è necessario modificarlo un po ', ma potrebbe funzionare. Il mio unico problema ora è che potrei andare nella direzione sbagliata come indicato da Otto. Grazie Drew. EDIT- Non c'è bisogno di modificare Posso vedere dove ha bisogno di modifiche :) Grazie
yeope

Se l'hai afferrato negli ultimi due minuti, non funzionerà, vai avanti e prendilo ora, l'ho risolto. È stato impostato per due tassonomie specifiche, ho migliorato il codice per funzionare su tutte le tassonomie registrate.
Ha disegnato Gourley l'

grazie ancora. Nel caso in cui ho provato la tua soluzione e in qualche modo funziona. Inoltre, se qualcun altro vuole utilizzarlo, è necessario passare add_filter('posts_clauses', 'orderby_tax_clauses', 10, 2 );a add_filter('posts_clauses', 'todo_tax_clauses', 10, 2 );Grazie :)
Sì,

Sì, questo è stato risolto nel blocco di codice, l'ho preso da un progetto a cui sto lavorando e ho dimenticato di cambiare il nome della funzione anche se l'ho cambiato nel gancio.
Ha disegnato Gourley il

1
Sai se è possibile ordinare le tassonomie per ID anziché per nome? Sto cercando di ottenere lo stesso risultato ordinando i gruppi di tassonomia per ID
Javier Villanueva,

9

Sto arrivando tardi al gioco qui, ma c'è un modo più semplice per farlo con WordPressy.

Costruisci la tua richiesta fiscale come al solito.

$tax_query = array();
$tax_query['relation']="OR";
$tax_query[] = array(
    'taxonomy' => 'product_cat',
    'field'    => 'slug',
    'terms'    => $cat_terms,
);
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

Imposta i tuoi args per query_posts o WP_Query

$args = array(
    'post_type'=>'post',
    'posts_per_page'=>12,
    'paged'=>$paged,
    'tax_query' => $tax_query,
);

Prima di effettuare la chiamata query_posts / WP_Query, agganciare il filtro orderby e sovrascriverlo

add_filter('posts_orderby', 'edit_posts_orderby');
function edit_posts_orderby($orderby_statement) {
    $orderby_statement = " term_taxonomy_id ASC ";
    return $orderby_statement;
}
query_posts($args);
remove_filter('posts_orderby', 'edit_posts_orderby');

non dimenticare di rimuovere il filtro in seguito ...

questo funziona b / c tax_query crea i join ecc. per te, devi solo ordinare uno dei campi dal join.


2
Qualche idea su come ordinare per nome anziché term_taxonomy_id? cambiare term_taxonomy_id in orderby_statement genera errori
tehlivi

Questa è la risposta corretta per chiunque sia interessato!
Mayra M,

2

Bene, vorrei esporre la mia esperienza nell'ordinamento di tipi di posta personalizzati per categoria / tassonomia.

LA RETE

  1. Un sito web di agenzie di viaggio in esecuzione su WordPress
  2. Contenuto principale sul tipo di post personalizzato chiamato "ruta"
  3. Tassonomia con questa struttura Tipo di viaggio> continente> paese

IL CASO

Nelle pagine dell'elenco delle categorie di archivio, il cliente voleva che i post fossero ordinati

  1. Il continente, ordinato per numero di percorsi su ciascuno.
  2. Il paese, in ordine alfabetico.

I PASSI

Innanzitutto , ho ricevuto la richiesta dalla query della pagina di archivio non modificata che è risultata essere questa:

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID 
FROM wp_posts 
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) 
WHERE 1=1 
AND ( wp_term_relationships.term_taxonomy_id IN (5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23,25,26,28,29,31,32,33,35,38,95,101,102,193) )
AND wp_posts.post_type IN ('ruta', 'nav_menu_item') 
AND (wp_posts.post_status = 'publish' OR wp_posts.post_author = 45 
AND wp_posts.post_status = 'private') 
GROUP BY wp_posts.ID 
ORDER BY wp_posts.post_date DESC LIMIT 0, 20

In secondo luogo , ho modificato il codice sql in Sequel Pro rispetto al database per soddisfare le mie esigenze. Ne esco (sì, probabilmente può essere migliorato: le mie conoscenze su MySQL non sono eccezionali):

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID, tt1.parent AS pare,
    (
    SELECT COUNT(*) 
    FROM  wp_posts
    INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
    INNER JOIN wp_term_taxonomy AS tt1 ON ( tt1.term_taxonomy_id =      wp_term_relationships.term_taxonomy_id )
    INNER JOIN wp_term_taxonomy AS tt2 ON ( tt2.term_taxonomy_id =  tt1.term_taxonomy_id )
    WHERE 1=1  
    AND tt1.parent = pare
    ) AS Total
FROM  wp_posts
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_taxonomy AS tt1 ON ( tt1.term_taxonomy_id =      wp_term_relationships.term_taxonomy_id )
INNER JOIN wp_terms ON ( tt1.term_id = wp_terms.term_id )
WHERE 1=1  
AND ( wp_term_relationships.term_taxonomy_id IN (5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23,25,26,28,29,31,32,33,35,38,95,101,102,193) ) 
AND wp_posts.post_type IN ('ruta', 'nav_menu_item') 
AND (wp_posts.post_status = 'publish' OR wp_posts.post_author = 45 
AND wp_posts.post_status = 'private') 
GROUP BY wp_posts.ID 
ORDER BY
total DESC,
wp_terms.name  

Terzo , ho agganciato la query sul file Functions.php con tre filtri: posts_fields, posts_join e posts_orderby

Il codice in Functions.php:

function xc_query_fields( $fields ) {

   $fields = "wp_posts.ID, wp_posts.post_title, wp_terms.name, tt1.parent AS pare,
    (
    SELECT COUNT(*) 
    FROM  wp_posts
    INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
    INNER JOIN wp_term_taxonomy AS tt1 ON ( tt1.term_taxonomy_id = wp_term_relationships.term_taxonomy_id )
    INNER JOIN wp_term_taxonomy AS tt2 ON ( tt2.term_taxonomy_id = tt1.term_taxonomy_id )
    WHERE 1=1  
    AND tt1.parent = pare
    )
    AS Total";
     return $fields;
}


function xc_query_joins( $join ) {
$join .= "INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
   INNER JOIN wp_term_taxonomy AS tt1 ON ( tt1.term_taxonomy_id = wp_term_relationships.term_taxonomy_id )
   INNER JOIN wp_terms ON ( tt1.term_id = wp_terms.term_id )";
 return $join;
}


function xc_query_orderby( $join ) {
    $join = "total DESC, wp_terms.name ";
    return $join;
 }

Alla fine ho attivato i filtri dall'hook pre_get_post in base ad alcune condizioni

function filtra_queries( $query )
{

  if (  is_archive()  && $query->is_main_query() && !is_admin()  ) {

$rutes = array('viajes-privados', 'asia', 'africa', 'oceania', 'america', 'oriente-proximo');

if  ( in_array( $query->get('category_name'), $rutes ) ) 
  {
  add_filter( 'posts_fields', 'xc_query_fields' );
  add_filter( 'posts_join', 'xc_query_joins' );
  add_filter( 'posts_orderby', 'xc_query_orderby' );
}// end if in_array

  }// end if is_archive

}
 add_filter('pre_get_posts', 'filtra_queries');

Spero che questo possa aiutare qualcuno


Bel lavoro, ridicolo che è stata presa questa quantità di codice per ordinare qualcosa in base a una tassonomia. Enorme problema con WP.
serraosays,

2

Ho avuto un problema molto simile che ho affrontato: voglio ordinare un archivio post-tipo personalizzato (articoli di riviste) per una tassonomia personalizzata (numeri). Non eseguo mai query SQL dirette sul mio sito - e di solito se siete come queste altre risposte - dovete ripensare il vostro approccio.

I PROBLEMI:

1) Wordpress non ti consente di ordinare le tassonomie in modo intelligente.

2) Wordpress non consente orderbydi usare tassonomie su WP_Query di tipo post (come spiegato da Otto).

SOLUZIONI:

1) L'ordinamento delle tassonomie è realizzato al momento dal plug-in NE di Custom Taxonomy Order al momento. Ti consente di ordinare la tassonomia tramite WYSIWYG in wp-admincui non è come lo farei ma non ho trovato niente di meglio.

Quando configuri il plugin, otterrai qualcosa di simile a quello che ho fatto qui. Prendi nota dell'opzione Auto-sort Queries of this Taxonomy- imposta questa opzione su Custom Order as Defined Above; questo ti dà l'ordine di cui hai bisogno. Immagine dello schermo:

Ordine NE tassonomia personalizzata visualizzato

2) Con una tassonomia ordinata in atto, è ora possibile creare una serie di chiamate WP_Query che attraversano ciascun termine, creando in modo efficace un archivio ordinato dalla tassonomia. Utilizzare get_terms()per creare un array di tutti i termini fiscali, quindi eseguire un foreachover su ciascun termine. Ciò crea un WP_Queryelemento per ogni termine che restituirà tutti i post per un determinato termine, creando in modo efficace un archivio ordinato per termine tassonomico. Codice per farlo accadere:

  // Get your terms and put them into an array
  $issue_terms = get_terms([
    'taxonomy' => 'issues',
    'hide_empty' => false,
  ]);

  // Run foreach over each term to setup query and display for posts
  foreach ($issue_terms as $issue_term) {
    $the_query = new WP_Query( array(
      'post_type' => 'post',
      'tax_query' => array(
        array(
          'taxonomy' => 'issues',
          'field' => 'slug',
          'terms' => array( $issue_term->slug ),
          'operator' => 'IN'
        )
      )
    ) );

    // Run loop over each query
    while($the_query->have_posts()) :
      $the_query->the_post();

      // YOUR TEMPLATE OUTPUT FOR EACH POST

    endwhile;
  }

Lettura correlata su questo sito: visualizza tutti i post in un tipo di post personalizzato, raggruppati per tassonomia personalizzata


2

Non sono sicuro del motivo per cui tutte le soluzioni qui sono praticamente esagerate. OK, è passata mezzo decennio fa, ma attualmente sto eseguendo il seguente codice e funziona:

   <?php // Default
    $wheels_args = array(
        'post_type' => 'wheels',
        'posts_per_page' => '96',
        'orderby' => 'taxonomy, name', // Just enter 2 parameters here, seprated by comma
        'order'=>'ASC'
    );
    $loop = new WP_Query($wheels_args);
    ?>

Questo ordinerà prima le tassonomie del tuo CPT in base alla tassonomia in ordine alfabetico e all'interno di questi gruppi di tassonomia anche in ordine alfabetico.


@yeope Perché questa è la risposta accettata !? grazie a Dio ho fatto scorrere
Juan Solano il

1

Ecco la soluzione che ho usato per questo particolare problema. Questa soluzione è per casi estremi in cui non è possibile utilizzare un pre_get_postsfiltro né è presente l'impaginazione sulla query (ad esempio: WooCommerce):

global $wpdb;

$taxonomies = array('my-tax-1', 'my-tax-2', 'my-tax-3');

$orderby = "'".implode("', '", array_keys($taxonomies))."'";
$id_sql = $GLOBALS['wp_query']->request;

$id_sql = preg_replace('/LIMIT\s+\d+\s?,?\s\d*/', '', $id_sql);
$id_sql = str_replace('SQL_CALC_FOUND_ROWS', '', $id_sql);

$term_sql = "SELECT
  tt.taxonomy AS `taxonomy`,
  t.name AS `term_name`,
  t.slug AS `term_slug`,
  count(*) AS `term_count`
FROM ({$id_sql}) p 
JOIN wp_term_relationships tr
  ON p.ID = tr.object_id
JOIN wp_term_taxonomy tt
  ON tr.term_taxonomy_id = tt.term_taxonomy_id
JOIN wp_terms t
  ON tt.term_id = t.term_id
WHERE tt.taxonomy IN ({$orderby})
GROUP BY t.slug
ORDER BY
  FIELD(tt.taxonomy, {$orderby})"; // Add further specific ordering here

$results = $wpdb->get_results($term_sql, ARRAY_A);

Ho usato questo per creare un menu di navigazione ordinato per tassonomia, termine e conteggio dei messaggi per termine.

Se desideri semplicemente i post, modifica la query in SELECT p.*eGROUP BY p.ID


0

È come una query prima della query, ma non disturberà se non stiamo interrogando troppi post ... L'idea è quella di modificare la query principale, quindi non abbiamo nemmeno bisogno di andare ai modelli e generare nuove query e loops ...

function grouped_by_taxonomy_main_query( $query ) {

    if ( $query->is_home() && $query->is_main_query() ) { // Run only on the homepage

        $post_ids = array();

        $terms = get_terms('my_custom_taxonomy');

        foreach ( $terms as $term ) {
            $post_ids = array_merge( $post_ids, get_posts( array( 
                'posts_per_page' => 4, // as you wish...
                'post_type' => 'my_custom_post_type', // If needed... Default is posts
                'fields' => 'ids', // we only want the ids to use later in 'post__in'
                'tax_query' => array( array( 'taxonomy' => $term->taxonomy, 'field' => 'term_id', 'terms' => $term->term_id, )))) // getting posts in the current term
            );
        }

        $query->query_vars['post_type'] = 'my_custom_post_type'; // Again, if needed... Default is posts
        $query->query_vars['posts_per_page'] = 16; // If needed...
        $query->query_vars['post__in'] = $post_ids; // Filtering with the post ids we've obtained above
        $query->query_vars['orderby'] = 'post__in'; // Here we keep the order we generated in the terms loop
        $query->query_vars['ignore_sticky_posts'] = 1; // If you dont want your sticky posts to change the order

    }
}

// Hook my above function to the pre_get_posts action
add_action( 'pre_get_posts', 'grouped_by_taxonomy_main_query' );
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.