Ordnungsargumente auf neu zusammengetragene Fragen anwenden

Ich habe zwei Abfragen mit Argumenten und dann habe ich sie zu meiner neuen Abfrage zusammengeführt – $ wp_query. Ich möchte jetzt Argumente auf die neue Abfrage anwenden, um die zusammengeführten Seiten / Beiträge nach Metawert zu zeigen. Diese Reihenfolge funktioniert großartig für das $ page_args-Array, wenn ich es dort anwende, aber nicht auf das kombinierte Array. Auch der meta_value_num wird in der Schleife ausgegeben, die Posts / Seiten werden jedoch nicht geordnet. Was fehlt mir hier? Vielen Dank.

$page_args = array( 'post_type' => array( 'page'), 'post__in' => get_pageslug(" 'first_page', 'second_page' ") ); $blog_args = array( 'post_type'=> array('blog'), 'showposts' => 1,//latest 'offset' => 0 ); $query_1 = new WP_Query( $page_args );//5 $query_2 = new WP_Query( $blog_args );//1 $args = array( 'meta_key' => 'my_ordering', 'orderby' => 'meta_value meta_value_num', 'order' => 'ASC' ); // Create new empty query and populate it with the other two queries to combine $wp_query = new WP_Query($args); $wp_query->posts = array_merge( $query_1->posts, $query_2->posts ); $wp_query->post_count = count( $wp_query->posts ); //6 while ( $wp_query->have_posts() ) : $wp_query->the_post(); $box_ordering = get_post_meta($post->ID, 'my_ordering', true); echo $box_ordering . '
'; //outputs meta values for each page/post correctly //but does not order the content by meta value endwhile;

Solutions Collecting From Web of "Ordnungsargumente auf neu zusammengetragene Fragen anwenden"

Folgendes würde ich tun. Dies wird mild getestet.

Er ruft die IDs aller erforderlichen Posts ab und erstellt dann eine einzelne Abfrage, um die Posts in der richtigen Reihenfolge zu erhalten.

 // get your page IDs, I assume this returns an array of integers $page_ids = get_pageslug(" 'first_page', 'second_page' "); // get your blog post ID $blog_ids = new WP_Query( array( 'post_type'=> array( 'blog' ), 'posts_per_page' => 1, 'fields' => 'ids', // just get the ID 'cache_results' => false // because we're only getting the ID ) ); $my_wp_query_args = array( 'post_type' => array( 'blog', 'page' ), 'post__in' => array_merge( $page_ids, $blog_ids->posts ), // merge two arrays of IDs 'meta_key' => 'my_ordering', 'orderby' => 'meta_value_num', // meta_value_num is used *in place of* meta_value 'order' => 'ASC' ); // NOTE: $wp_query is an internal WP object already so don't overwrite it. $my_wp_query = new WP_Query( $my_wp_query_args ); while ( $my_wp_query->have_posts() ) : $my_wp_query->the_post(); $box_ordering = get_post_meta($post->ID, 'my_ordering', true); echo $box_ordering . '
'; //outputs meta values for each page/post correctly endwhile;