wp_query in der Formularmethode des Widgets bricht den Customizer

In der “form” -Methode eines meiner Widgets mache ich eine Abfrage, um dem Benutzer einige Beiträge zur Auswahl zu geben, wie folgt:

 'ys_product', 'order' => 'ASC', 'orderby' => 'title', 'meta_query' => array( array( 'key' => 'ys_product_status', 'value' => 'ok', ) ), 'posts_per_page' => - 1 ) ); if ( $products->have_posts() ) { while ( $products->have_posts() ) : $products->the_post(); $product = array( 'name' => the_title_attribute( array( 'echo' => FALSE ) ), 'ID' => get_the_ID(), ); $prod_array[] = $product; endwhile; wp_reset_postdata(); } 

Aus irgendeinem Grund gehen die Dinge bei diesem Code mehr oder weniger falsch. Das Widget funktioniert, wp_query füllt die entsprechende Auswahl aus, das Widget wird angezeigt und kann sowohl auf der Widgets-Seite als auch auf dem Customizer konfiguriert werden.

Aber…

Aus irgendeinem Grund hat dieses Widget während der Anpassung im Customizer die folgende CSS-Regel:

 .customize-control-widget_form:not(.widget-rendered) { opacity. 0.5 } 

Was wiederum das bewirkt: Widget mit Opazität geändert

Außerdem kann ich im Customizer die Schaltfläche “neues Widget hinzufügen” nicht mehr verwenden, es sei denn, ich entferne dieses Widget (es gibt einen Fehler in customizer.js und klagt darüber, dass TypeError: control is undefined .

Alles scheint zu funktionieren, aber offensichtlich stimmt etwas nicht, weil ich Customizer breche. Jeder hat eine Ahnung, was hier vor sich geht?

Update : Am Ende habe ich WP_Query durch eine SQL-Abfrage durch $ wpdb ersetzt, und jetzt funktioniert alles wie beabsichtigt. Trotzdem möchte ich wissen, warum es nicht so funktioniert, wie es geschrieben werden sollte. 🙁

Danke und Grüße. (WP 4.1)

Solutions Collecting From Web of "wp_query in der Formularmethode des Widgets bricht den Customizer"

Ich hatte genau das gleiche Problem beim Abfragen von Post und Seiten, aber auch den Jetpack-Portfolio-Post-Typ in meinen benutzerdefinierten Widgets.

Ich verwendete $query = new WP_Query( $query_args ); in beiden Fällen. Für mich bestand die Lösung darin, $query zu $query_entries und $query_projects . Es funktioniert jetzt wie erwartet.

Ich sehe, dass Sie bereits $products , aber möglicherweise steht es in Konflikt mit einer anderen Abfrage, die Sie ausführen. Versuchen Sie das zu ändern und sehen Sie, ob es den Trick macht.

UPDATE: Missachtet das, es hat es nicht behoben. Wenn ich den Customizer schließe und zurückkomme, verhalten sich die Widgets immer noch komisch.