WP_Query ordinamento per valore numerico dei termini della tassonomia

20 feb 2013, 16:37:43
Visualizzazioni: 14K
Voti: 3

Ho questa query...

<?php 

    $press = new WP_Query(array(
        'posts_per_page' => -1,
        'post_type'     => 'individual',
        'post_status'   => 'private' 
    ));

    if ($press->have_posts()) : while ($press->have_posts()) : $press->the_post();

?>

Ma i miei custom post-type utilizzano una tassonomia personalizzata con un valore numerico come termine.

La mia domanda è: c'è un modo per ordinare questa query in base al valore del termine?

La tassonomia si chiama 'individual-group'

Qualsiasi aiuto sarebbe enormemente apprezzato, grazie.

Josh

0
Tutte le risposte alla domanda 3
1

No, non è possibile farlo con le funzionalità predefinite del Core di WordPress. @heathenJesus parla di metadati non di tassonomie. Vedi http://scribu.net/wordpress/sortable-taxonomy-columns.html per una soluzione corretta.

E una spiegazione più approfondita del perché questa funzionalità non è integrata nel Core: Usando wp_query è possibile ordinare per tassonomia?

1 mar 2013 00:37:59
Commenti

Grazie Evan, mi assicurerò di creare chiavi meta per questo in futuro se mai avrò bisogno di ordinare un termine di tassonomia.

Joshc Joshc
1 mar 2013 11:54:30
0

Ecco la query complessa che ho utilizzato per ordinare numericamente e filtrare la query dei post in base agli slug delle tassonomie.

$my_post_type = 'some_post_type';
$my_term_slug_to_be_used_for_Ordering = 'some_slug';
$my_term_slug_to_be_used_for_Filtering = 'some_other_slug';

$querystr = "
  SELECT 
   $wpdb->posts.*, $wpdb->term_relationships.object_id, 
   (SELECT wpt.slug
        FROM $wpdb->term_taxonomy wptt 
        INNER JOIN $wpdb->term_relationships wptr ON wptt.term_taxonomy_id = wptr.term_taxonomy_id
        INNER JOIN $wpdb->terms wpt ON wpt.term_id = wptt.term_id
        WHERE 
        wptr.object_id = $wpdb->term_relationships.object_id AND 
        wptt.taxonomy = 'my_term_slug_to_be_used_for_Ordering') AS numeric_column_value

    FROM $wpdb->term_taxonomy INNER JOIN $wpdb->term_relationships ON $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
         INNER JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->term_relationships.object_id
         INNER JOIN $wpdb->terms ON $wpdb->terms.term_id = $wpdb->term_taxonomy.term_id
    WHERE 
         $wpdb->terms.slug = '{$my_term_slug_to_be_used_for_Filtering}' AND
         $wpdb->posts.post_type = '$my_post_type' AND $wpdb->posts.post_status = 'publish'

    ORDER BY numeric_column_value * 1 DESC"; // È effettivamente una stringa, quindi * 1 per il valore numerico

$r = $wpdb->get_results($querystr, OBJECT);
4 mar 2014 22:04:12
6

Certamente, nel parametro orderby, esiste un'opzione chiamata meta_value_num che dovrebbe fare esattamente quello che stai cercando.

http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters


$press = new WP_Query(array(
    'posts_per_page' => -1,
    'post_type'      => 'individual',
    'post_status'    => 'private',
    'orderby'        => 'meta_value_num',
    'meta_key'       => 'individual-group'
));
20 feb 2013 17:02:27
Commenti

... purché meta_value sia effettivamente un numero. Ci sono più di un paio di post qui dove le persone cercano di ordinare numericamente cose che non sono numeri :) @heathenJesus, puoi fornire un codice di esempio. Le risposte che contengono solo link sono sconsigliate.

s_ha_dum s_ha_dum
20 feb 2013 17:44:08

La domanda specificava esplicitamente "tassonomia personalizzata con un valore di termine numerico."

Aggiunta una dimostrazione dell'uso di 'meta_value_num'.

heathenJesus heathenJesus
21 feb 2013 23:03:00

Oh, lo so. Non era in alcun modo una critica alla tua risposta. È solo che, in generale, non mi fido delle persone quando dicono "numerico". A volte intendono cose come "$100" o "123-04". Colloquialmente sono numeri ma non sono numerici per il software. E lavoro con un ufficio pieno di persone così, quindi ho imparato a specificare molto attentamente.

s_ha_dum s_ha_dum
21 feb 2013 23:18:51

Giusto, @s_ha_dum

heathenJesus heathenJesus
21 feb 2013 23:22:45

@heathenJesus quindi stai dicendo che posso effettivamente interrogare i termini tassonomici allo stesso modo in cui interrogo i campi personalizzati? Pensavo che le mete key e i termini tassonomici registrati fossero due cose separate... Per esempio, potrei interrogare usando il tuo metodo un termine di categoria tramite 'meta_key'? Non pensavo fosse possibile fare così...

Joshc Joshc
23 feb 2013 02:32:14

tipo 'orderby' => 'meta_value_num', 'meta_key' => 'category'? Ovviamente il mio termine di categoria deve essere puramente numerico affinché la funzione orderby funzioni, questo è chiaro..

Joshc Joshc
23 feb 2013 02:36:27
Mostra i restanti 1 commenti