Wie ändere ich eine benutzerdefinierte Abfrage in eine Standardschleife?

Ich versuche zu ändern, wie Ergebnisse in einer Post-Liste angezeigt werden, die derzeit von dem folgenden Code gesteuert wird. Es wird jedoch nicht in der WP_Query while ( $the_query->have_posts() ) : $the_query->the_post(); Stil, an den ich gewöhnt bin und den ich viele Shortcodes und Loop Styles gebaut habe.

Wie kann ich den folgenden Code in eine “normale” WordPress-Schleife ändern, die es mir erlaubt, Template-Tags wie the_title () zu verwenden?

  $totalposts = $wpdb->get_results($querystr, OBJECT); $wp_query->request = $querystr . " LIMIT " . $ppp . " OFFSET " .$offset; $results = $wpdb->get_results($wp_query->request, OBJECT); foreach ($results as $result) { $offset++; $output .= 'ID).'">' . $result->post_title . ' (' . $result->post_date . ')
'; }

Solutions Collecting From Web of "Wie ändere ich eine benutzerdefinierte Abfrage in eine Standardschleife?"

Wie ich benutzerdefinierte Abfragen in der Vergangenheit gemacht habe, verwende $wpdb->get_col() und gab einfach ein Array von IDs der Beiträge zurück. Dann get_posts() ich das an eine get_posts() übergebe die IDs an den Parameter post__in . Auf diese Weise können Sie WP-Standardsteuerelemente verwenden.

Um Template-Tags verwenden zu können, müssen Sie nach dem Abrufen Ihrer benutzerdefinierten Select-Abfrage zwei Dinge tun:

  1. Sie müssen die global $post Variable global $post deklarieren.
  2. Sie müssen die function setup_postdata ($ post) aufrufen, um die Variablen zu füllen.

Also musste mein Code wie folgt geändert werden:

 $results = $wpdb->get_results($wp_query->request, OBJECT); global $post; foreach ($results as $post) { setup_postdata($post); ?> 

< ?php the_title(); ?>

etc.

Der Schlüssel dazu ist auf dieser Codex-Seite:

Posts mit einer benutzerdefinierten Auswahlabfrage anzeigen