Zeigen Sie zwei Post-Typen an, die nach zwei benutzerdefinierten Feldern sortiert sind

Ich habe zwei benutzerdefinierte Post-Typen, die von zwei Third-Party-Plugins erstellt wurden und von der Hauptabfrage in einer gemeinsamen geordneten Liste angezeigt werden sollen. Sie müssen nach zwei verschiedenen benutzerdefinierten Feldern geordnet sein, aber mit derselben Information – dem Starttag des Ereignisses, die im selben Format “Ymd” gespeichert sind. Bellow ist mein Code, aber es funktioniert nicht, wie erwartet wird – zuerst werden Posts des Ereignistyps angezeigt, aber in einer ungeordneten algebraischen Art, dann schreiben facebook_events Pfosten, geordnet, wie man erwartet. Wie kann ich das lösen?

function add_custom_post_type_to_query( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'post_type', array( 'post', 'facebook_events', 'event' ) ); $query->set( 'meta_query', array( 'relation' => 'OR', array( array( 'key' => 'event_start_date', //this is from facebook_events post type 'value' => date_i18n("Ymd"), 'compare' => '>=', 'type' => 'DATE', ) ), array( 'key' => '_event_start_date', //this is from event post type 'value' => date_i18n("Ymd"), 'compare' => '>=', 'type' => 'DATE', ) ) ); $query->set( 'orderby', 'meta_value' ); $query->set( 'order', 'ASC' ); } } add_action( 'pre_get_posts', 'add_custom_post_type_to_query' ); 

AKTUALISIEREN

Ich hatte eine Aufklärung! Ich habe festgestellt, wo mein Code falsch war, siehe meine Antwort.

Solutions Collecting From Web of "Zeigen Sie zwei Post-Typen an, die nach zwei benutzerdefinierten Feldern sortiert sind"

Mein alter Code war falsch, das ist ein guter, wie ich denke:

 function add_custom_post_type_to_query( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'post_type', array( 'post', 'facebook_events', 'event' ) ); $query->set( 'meta_query', array( 'relation' => 'OR', array( 'key' => 'event_start_date', //this is from facebook_events post type 'value' => date_i18n("Ymd"), 'compare' => '>=', 'type' => 'DATE', ), array( 'key' => '_event_start_date', //this is from event post type 'value' => date_i18n("Ymd"), 'compare' => '>=', 'type' => 'DATE', ) ) ); $query->set( 'orderby', 'meta_value' ); $query->set( 'order', 'ASC' ); } } add_action( 'pre_get_posts', 'add_custom_post_type_to_query' ); 

AKTUALISIEREN

Hier finden Sie eine bessere Lösung, wie sie für die Bestellung von Zeitstempeln verwendet wird, die nicht nur das Datum, sondern auch die Uhrzeit beinhaltet.