Transofrm sql query to wordpress query with new wp_query

Lesezeit: 2 Minuten

Ich versuche, eine SQL-Abfrage in eine WordPress-Abfrage zu konvertieren, verstehe aber nicht, wie das geht?

Abfrage, in die ich versuche zu konvertieren new wp_query

$query = "  SELECT SQL_CALC_FOUND_ROWS distinct wp_posts.ID
            FROM   wp_posts
                   INNER JOIN wp_postmeta
                           ON ( wp_posts.id = wp_postmeta.post_id )
                   INNER JOIN wp_postmeta AS mt1
                           ON ( wp_posts.id = mt1.post_id )
            WHERE  1 = 1
                   AND wp_posts.id NOT IN ( 0 )
                   AND wp_posts.post_type="topic"
                   AND ( wp_posts.post_status="publish"
                          OR wp_posts.post_status="closed"
                          OR wp_posts.post_status="reported" )
                   AND ( wp_postmeta.meta_key = '_bbp_last_active_time')
            GROUP  BY wp_posts.id
            ORDER  BY wp_postmeta.meta_value DESC
            LIMIT  0, 10 
        ";
$topics = $wpdb->get_results($query, OBJECT);

damit ich es verwenden kann

while($topics->have_posts()) : $topics->the_post(); ?>

etw

$args = array(); // how do I convert to this.
$topics = new WP_query($args);

Versuchen:

$wpq = new WP_Query();
$wpq->parse_query($query);
$posts = $wpq->get_posts();

oder um die Standardfunktionen von WP_Query zu verwenden:

$wpq = new WP_Query($query);

  • Nichts erscheint und wurde auf SQL getestet und sollte erscheinen

    – Adrian

    21. Februar 2015 um 20:30 Uhr


  • so hinzugefügt: $topics = new WP_Query(); $topics->parse_query($query); und danach funktioniert das while abd nicht.

    – Adrian

    21. Februar 2015 um 20:34 Uhr


  • Ich habe die Antwort aktualisiert. Ich hätte anmerken sollen, dass Sie die Beiträge von Ihnen dazu benötigen. Wenn ich Ihre Frage noch einmal lese, denke ich, dass Sie wahrscheinlich das zweite Format möchten.

    Benutzer488187

    21. Februar 2015 um 20:37 Uhr

  • Wusste nicht, dass die neue QP-Abfrage SQL verarbeiten kann.

    – Adrian

    21. Februar 2015 um 20:38 Uhr

  • -1 Ich habe versehentlich dafür gestimmt, weil es so aussah, als würde es funktionieren. Aber es stellt sich heraus, dass dies nicht der Fall ist. Das Initialisieren von WP_Query auf diese Weise gibt alle Beitragstypen basierend auf den Standardeinstellungen zurück, scheint jedoch die übergebene SQL-Abfrage nicht zu berücksichtigen.

    – Jules Colle

    11. Dezember 2017 um 11:02 Uhr

Ich habe die Lösung von Bobdye ausprobiert, aber es stellt sich heraus, dass sie nicht funktioniert. Die einzige Möglichkeit, soweit ich weiß, eine Schleife einzurichten, wo man hingehen und die nutzen kann the_title(), $post->ID und so weiter, soll wie folgt funktionieren:

global $post;

$sql_results = $wpdb->get_results( $sql_query, OBJECT);

if ($sql_results) {
    foreach ($sql_results as $post) {
      setup_postdata($post);

      // You're in the loop now. You can access all the $post objects
      // and functions like in any other wp loop.
      // example: the_title();

    }
  wp_reset_postdata();
}

Ein Problem dabei ist die Paginierung. Aber ich glaube, diese Antwort löst es ordentlich:
https://wordpress.stackexchange.com/questions/21626/pagination-with-custom-sql-query#28717

1381680cookie-checkTransofrm sql query to wordpress query with new wp_query

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy