it-swarm.com.de

wp_query orderby title und meta key value (WP3.1)

Ich habe eine Taxonomie wp_query und möchte die Liste nach Titel und nach Meta Wert (numerischer Wert) sortieren

  • Haben Sie einen Meta-Wert Interesting = 1 oder 0 in den Beiträgen
  • Nicht so interessante Beiträge wären am Ende der Abfrage

GOAL - OUTPUT LIKE THIS: (ist dies mit WP_QUERY und WP3.1 möglich)

A (META KEY interesting = 1 )

B (META KEY interesting = 1 )

C (META KEY interesting = 1 )

A (META KEY interesting = 0 )

B (META KEY interesting = 0 )

1
ide79

Sie können den orderby-Teil der Abfrage filtern, um zu ermitteln, was Sie möchten (der Versuch, ihn über den Parameter orderby zu übergeben, funktioniert nicht, er wird herausgefiltert). In diesem einfachen Beispiel wird die Sortierreihenfolge meta_value vor der Standardtitelsortierreihenfolge hinzugefügt.

add_filter( 'posts_orderby', 'wpse15168_posts_orderby' );
$query = new WP_Query( array(
    'meta_key' => 'interesting',
    'orderby' => 'title',
    'order' => 'ASC',
) );
remove_filter( 'posts_orderby', 'wpse15168_posts_orderby' );

function wpse15168_posts_orderby( $orderby )
{
    global $wpdb;
    $orderby = $wpdb->postmeta . '.meta_value DESC, ' . $orderby;
    return $orderby;
}
5
Jan Fabry

sie können keine aufsteigende und absteigende Reihenfolge mischen, aber wenn Sie die Nullen und Einsen vertauschen, könnte dies funktionieren:

$query = new WP_Query( array( 'meta_key => 'interesting',
                              'orderby' => 'meta_value_num title',
                              'order' => 'ASC' ) );
1
windyjonas