WP_Query mit einem Array von IDs, sortiert nach Array

Lesezeit: 3 Minuten

Ehsans Benutzer-Avatar
Ehsan

Ich habe ein Array von IDs und möchte diese Beiträge von WP_Quey() erhalten

$myarray = $ids;
$args = array( 'post__in' => $myarray);
// The Query
$the_query = new WP_Query( $args );

Es ist, Ergebnis nach Datum sortieren. Aber ich möchte es nach $myarray-Elementen sortieren, und das erste Ergebnis wäre die erste ID in $myarray

  • Deine Frage ist nicht ganz klar. Aber wenn Sie Posts nach ID in Ihrem Array sortieren möchten, können Sie orderby=>’ID’ verwenden. Hier ist das args-Array. $args = array( ‘post__in’ => $myarray, ‘orderby’=>ID, ‘order’=>’ASC’);

    – Pranita

    7. März 2014 um 6:00 Uhr


In WordPress 3.5 und höher können Sie verwenden 'orderby'=>'post__in' dann musst du das schreiben:

$myarray = $ids;    
$args = array('post__in'=> $myarray, 'orderby'=>'post__in');
// The Query
$the_query = new WP_Query( $args );

  • Aber was ist, wenn Sie alle IDs einschließen möchten, nicht nur post__in?

    – Tim Hallmann

    14. Februar 2020 um 17:25 Uhr

Ich weiß, dass meine Antwort zu spät kommt, aber ich muss richtig antworten.

Wie ich es versuchte 'orderby'=>'post__in':

Zum Beispiel habe ich dynamisch aktualisierte Cookies, und ich muss Produkte in den Block der zuletzt angesehenen Produkte laden, damit das erste Produkt in diesem Block zuletzt angesehen werden muss.

OK.

Ich hatte Ausweise 1720, 19626, 19173, 19188.

$args = array('post__in'=> $myarray, 'orderby'=>'post__in');

Diese Zeichenfolge in der Ausgabe gab meine Produkte der Reihe nach zurück:

19626, 19188, 19173, 1720 und es ist nicht meine bestellung. Diese Ursache einfach Parameter bestellen BESCHR standardmäßig WP_Query. Und wir haben nur eine Chance füreinander – ASC it…sehr traurige Antwort von M H.

Meine Antwort ist einfach clever:

BRAUCHEN wir NICHT ‘orderby’=>’post__in’

wir müssen bekommen:

$myarray = $ids;    
$args = array('post__in'=> $myarray);
$the_query = new WP_Query( $args );

Danach machen wir:

foreach($myarray as $myarray_id){
 while ( $the_query->have_posts()) {
   $the_query->the_post();
   if($post->ID == $myarray_id){
     //DO SOMETHING
   }
 }
}

Das ist es!

  • Diese Antwort scheint darauf hinzudeuten, dass die frühere Antwort von MH, die einfache Verwendung von „orderby“ => „post__in“ nicht funktioniert. Für mich funktioniert das jedoch gut, und ich finde es eine einfachere Lösung, um ehrlich zu sein. Vielleicht fehlt mir etwas oder vielleicht hat sich das Verhalten in WordPress in der Zwischenzeit geändert, aber ich kann bestätigen, dass ‘orderby’=>’post__in’ gut funktioniert, um nach den ausgewählten IDs in der Reihenfolge zu sortieren, in der ich sie im Array aufliste, nichts weiter scheint gebraucht.

    – GoldyOnline

    24. Juni 2021 um 11:17 Uhr

Benutzeravatar von ilgice
ilgie

Ordnungsgemäße Übermittlung der Bestellung:

$id_array = array(5,2,3,7);

foreach($id_array as $id_array_v)
{
   $query = new WP_Query(array('post__in' => array($id_array_v)));

   while($query -> have_posts())
   {
      $query -> the_post();
      the_title();
   }
}

  • Können Sie erklären, was Ihr Code tut? Bitte erwägen Sie eine Überarbeitung, um eine Löschung zu vermeiden. (Überprüfungsteam)

    – www139

    30. März 2018 um 21:25 Uhr

  • ordnungsgemäße Übermittlung der Bestellung

    – ilgie

    31. März 2018 um 12:10 Uhr

1400130cookie-checkWP_Query mit einem Array von IDs, sortiert nach Array

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

Privacy policy