Kombinieren Sie WP_Query mit einem Array von benutzerdefinierten Daten zu einer einzelnen Schleife, ohne die Seitennumerierung zu unterbrechen

Der Inhalt meiner Schleife sollte nicht nur Posts sein. Andere Datenquellen sollten nahtlos darin enthalten sein – etwa neu aktualisierte Begriffe von benutzerdefinierten Taxonomien, Tweets, die von einer API gezogen werden, oder neue Instagram-Fotos.

Ich möchte diese Quellen so nahtlos wie möglich zu einem einzelnen Feed zusammenführen, sodass Folgendes möglich ist:

  • Manipulieren Sie die Reihenfolge der “Posts” nach bestimmten Kriterien (z. B. Objekteigenschaft “date_created”)
  • Verwenden Sie die Paginierung, die durch die tatsächliche Anzahl der Objekte in der “zusammengeführten Schleife” manipuliert würde.

Ist das sinnvoll? Hier ist mein vereinfachter Code, der versucht, die hier beschriebene Technik zu verwenden: Kann ich 2 neue WP_Query ($ variable) zusammenführen?

// Get other data // ----------------------------------------------------------------- $mista = get_terms(array( 'taxonomy' => 'custom_tax', 'number' => 0 )); $tweets = cibulka_tweet_getter(); // Merge data with post query // adapted from https://wordpress.stackexchange.com/questions/55519/can-i-merge-2-new-wp-queryvariable-s // ----------------------------------------------------------------- $wp_query = new WP_Query(array( 'posts_per_page' => 10, 'paged' => get_query_var('paged'), 'post_type' => array('post', 'cpt1', 'cpt2') )); $wp_query->posts = $wp_posts->posts + $mista + $tweets; $wp_query->post_count = $wp_query->post_count + count($mista) + count($tweets); // ... // assign each object in `$wp_query->posts` with "date_created" property, either pulled from meta (`get_post_meta`), API result or something else // ... // Sort data // - note: each "query object" (post, term or tweet) has "sort_date" property assigned by me already // ----------------------------------------------------------------- usort($wp_query->posts, function($a, $b) { return $b->date_created - $a->date_created; }); // Loop through data // ----------------------------------------------------------------- while ($wp_query->have_posts()) { $wp_query->the_post(); global $post; if (is_a($post, 'WP_Post')) { // is post, do standard post stuff such as `echo the_title()` } elseif (is_a($post, 'WP_Term')) { // is term, show taxonomy information } else { // is something else, such as result of Twitter API, work with that } } 

Auf diese Weise werden Objekte korrekt sortiert (durch die benutzerdefinierte Eigenschaft sort_date ), aber die Paginierung scheint nicht zu funktionieren.

Ich werde versuchen, Main $wp_query auf Archivseiten durch pre_get_posts Aktion zu pre_get_posts , um auch einige Nicht-Post-Objekte pre_get_posts . Zum Beispiel sollte die Eltern-Taxonomie-Seitenschleife nahtlos verknüpfte “Karten” von neu aktualisierten Kindbegriffen umfassen.

Das macht “den richtigen Weg” noch wichtiger.

Könnten Sie mich bitte irgendwohin weisen? Vielen Dank im Voraus!

Solutions Collecting From Web of "Kombinieren Sie WP_Query mit einem Array von benutzerdefinierten Daten zu einer einzelnen Schleife, ohne die Seitennumerierung zu unterbrechen"