Beiträge werden nicht in korrekter alphabetischer oder ID-Reihenfolge angezeigt, wenn get_posts / orderby, sondern nur auf dem Produktionsserver verwendet wird

Ich habe eine Seite, die einige benutzerdefinierte Beiträge auflistet und die nicht in der korrekten alphabetischen Reihenfolge angezeigt werden. Als Test habe ich auch versucht, sie in Reihenfolge ihrer Ids aufzulisten und das erscheint auch nicht in der richtigen Reihenfolge. Wenn es als Ids aufgelistet ist, erscheinen sie so, als ob sie in 3 Gruppen hoher Zahlen in den 4000ern, unter 200 und dann 3000 gruppiert wären, es ist sehr merkwürdig. Es funktioniert gut auf meinem lokalen Server. Auch die Bestellung funktioniert gut in der WordPress-Back-End. Das Problem scheint aufgetreten zu sein, als ich die Seite in ein neues Hosting-Paket auf 1 & 1 verschoben habe. Gab es Probleme mit serverspezifischen Problemen?

Ich habe 2 Testseiten erstellt, die eine einfache Liste von Titeln und IDs (in der falschen Reihenfolge) enthalten. ID-Reihenfolge: http://www.realpatisserie.co.uk/allergen-list/allergen-list-test-id/ Titelreihenfolge: http://www.realpatisserie.co.uk/allergen-list/allergen-list-test/

$args = array( 'posts_per_page' => -1, // show all items 'orderby' => 'ID', // was 'title', 'order' => 'ASC', 'post_type' => 'product_al', 'post_status' => 'publish' ); $myposts = get_posts( $args ); foreach ( $myposts as $post ) : setup_postdata( $post ); $product_title = ucfirst(get_the_title()); $product_ID = get_the_ID(); ?> <tr id="p_id_'">    <?php endforeach; wp_reset_postdata(); 

Edit: Ich habe etwas anderes ausprobiert und WP_Query benutzt und es macht dasselbe

  $args = array( 'post_type' => 'product_al', 'posts_per_page' => -1, 'orderby' => 'ID', 'order' => 'ASC', ); $the_query = new WP_Query( $args ); while ( $the_query->have_posts() ) : $the_query->the_post(); $product_title = ucfirst(get_the_title()); $product_ID = get_the_ID(); ?> <tr id="p_id_'">    <?php endwhile; wp_reset_postdata(); 

Solutions Collecting From Web of "Beiträge werden nicht in korrekter alphabetischer oder ID-Reihenfolge angezeigt, wenn get_posts / orderby, sondern nur auf dem Produktionsserver verwendet wird"

Es wäre untypisch, wenn sich die Serverkonfiguration direkt auf die Post-Abfrage auswirkt, ohne dass sich SQL explizit falsch verhält. Was wäre ein Grenzfall.

Der häufigere Fall wäre ein Code, der an Abfragefilter für seine Zwecke angehängt wird und nicht genau genug ist, um nur die Abfragen anzusprechen, die er benötigt. Das Thema, das nur für das Frontend spezifisch ist, scheint auch in diese Richtung zu weisen.

In jedem Fall würde die Fehlersuche sich auf tatsächliche SQL-Abfragen beschränken, die erzeugt und ausgeführt werden. Irgendwann gab es entweder eine Diskrepanz zwischen korrekter / falscher Umgebung oder Sie konnten SQL ausschließen und zur Fehlersuche auf der PHP-Seite übergehen.

Endlich ging das auf den Grund. Mein Post-Typ ( product_al ) unterstützt menu_order nicht, aber aus irgendeinem Grund hatten einige der älteren Posts einen Wert für menu_order.

Für jeden neu erstellten Beitrag würde menu_order auf 0 gesetzt sein, weshalb alles ein wenig durcheinander geraten ist.

Um es zu beheben Ich habe gerade diese SQL in phpmyadmin ausgeführt, um menu_order auf meinem Beitragstyp ( product_al ) zurückzusetzen:

 UPDATE wp_posts SET `menu_order` = '0' WHERE wp_posts.post_type = 'product_al' ; 

Ich weiß immer noch nicht, warum ich Werte auf menu_order , ich hatte vor kurzem die Seite menu_order , aber nicht sicher, wie es passiert ist.

Was ich entdeckt habe, was etwas seltsam ist, ist die Verwendung von WP_Query auch wenn Sie angeben, auf welche Weise Ihre Abfrage sortiert werden soll. Es fügt immer noch ORDER BY wp_posts.menu_order , wenn WordPress dies nicht ORDER BY wp_posts.menu_order , wäre das kein Problem gewesen.