Erzwinge Update-Widget-Anpassung mit js

Auf Englisch

Hallo, ich entwickle ein Widget, das den Inhalt (des Feldes) ändert, abhängig von den ausgewählten Optionen.

Wenn Sie die Einstellung ändern, muss das Widget aktualisiert werden.

Der Customizer aktiviert die automatische Aktualisierung, funktioniert jedoch in diesem Fall nicht (wenn der Inhalt des Widgets geändert wird), sondern zeigt lediglich die Schaltfläche “Anwenden” an.

Es stellt sich heraus, dass das Widget nach 2 Updates aktualisiert wird.

Die Frage ist, wie Sie den Widget-Customizer aktualisieren (seinen Widget-Inhalt neu starten)?

На Русском Здравствуйте, я разрабатываю виджет который изменяет свое содержимое (поля) в зависимости от выбранных параметров. При смене параметра мне нужно принудительно обновлять виджет. В кастомайзере включено автообновление, но оно не срабатывает в данном случае (когда меняется контент виджета), авросто появляется кнопка “применить”. Получается виджет обновляется после 2х обновлений. Вопрос, как обновить виджет в кастомайзере (перегагрузить его содержимое)?

Solutions Collecting From Web of "Erzwinge Update-Widget-Anpassung mit js"

Widgets im core machen dies derzeit nicht einfach. Bitte lesen Sie Live Widget Previews: Widget Management im Customizer in WordPress 3.9 und insbesondere den Abschnitt “No Update button (in der Regel)”:

Widget Formulare auf der Admin-Seite haben eine vertraute Schaltfläche Speichern. In früheren Versionen von Widget Customizer haben wir die Schaltfläche “Speichern” als Schaltfläche “Aktualisieren” angepasst, da sie das Widget nicht speichern, sondern nur die Vorschau mit dem neuesten Status des Widgets aktualisieren würde. Das Klicken auf diese Update-Schaltfläche, um das Vorschau-Update zu sehen, war jedoch eine schlechte Benutzererfahrung und war unnötig. Daher haben wir eine Methode implementiert, um den Status des Widgets in der Vorschau zu aktualisieren, wenn ein Feld im Steuerelement aktualisiert wird: Die Schaltfläche Aktualisieren wurde ausgeblendet, und das Zahlenauswahlfeld wird angezeigt, wenn eine Änderung mit der Vorschau synchronisiert wird.

Die Logik, die das Live-Übermitteln des Widget-Formulars während der Interaktion mit ihm ausführt, hängt davon ab, dass die Felder im Widget-Formular dieselben Felder sind, die zurückgegeben werden, wenn das Widget-Formular bereinigt wird. Dies ist so, dass die Felder so ausgerichtet werden können, dass sie mit ihren bereinigten Werten aktualisiert werden. Wir konnten nicht die Route der Widget-Formulare auf der Widgets-Admin-Seite gehen, die tatsächlich vollständig durch das neu gesäuberte Formular ersetzt werden, weil dies den Benutzer beeinträchtigen würde, der schnell in diese Felder eingibt.

Wenn also ein Widgetformular dynamisch hinzufügt oder ändert, welche Eingabefelder enthalten sind, werden die Live-as-you-type-Aktualisierungen gestoppt und die Schaltfläche Aktualisieren wird wieder angezeigt. Wenn Sie auf diese Schaltfläche klicken, wird das Formular wie auf der Widgets-Verwaltungsseite durch die bereinigte Version ersetzt. Wir haben auch neue jQuery-Ereignisse eingeführt, um diese Formänderungen zu bewältigen …

Sie müssen also sorgfältig sicherstellen, dass PHP die gleichen Felder generiert, die in JS dynamisch generiert werden, um sicherzustellen, dass die Eingaben bei der Rückgabe der update-widget Ajax-Anfrage mit dem Inhalt der WP_Widget::form() -Ausgabe WP_Widget::form() .

Die Art und Weise, wie Widgets im Customizer implementiert werden, ist nicht ideal, dies wurde jedoch getan, um die Abwärtskompatibilität zu maximieren. Für eine neue Sicht auf Widgets, um sie JavaScript-getrieben im Gegensatz zu PHP-getrieben zu machen, siehe # 33507 und sehen Sie auch die JS Widgets Feature-Plugin, die das Problem vollständig vermeidet, da JS verwendet wird, um die Formular-UI des Widgets zu verwalten vollständig.