Ich versuche, auf das Steuerelement eines Standardwidgets im Anpassungsbereich zuzugreifen, nicht auf die Vorschau !
Also habe ich eine testing.js- Datei in eine customize_controls_enqueue_scripts- Aktion eingereiht
/** * Enqueue script for custom customize control. */ function custom_customize_enqueue() { wp_enqueue_script( 'testing', get_template_directory_uri() . '/assets/js/testing.js', array( 'jquery', 'customize-controls' ), false, true ); } add_action( 'customize_controls_enqueue_scripts', 'custom_customize_enqueue' );
Versuchen Sie in dieser Datei test.js, den Container eines Steuerelements wie folgt zu erreichen
alert(wp.customize.control('text_widget_color_setting').container.length);
Alles ist in Ordnung und das Ergebnis von alert ist 1, also erreiche ich die Kontrolle durch das DOM.
Aber wenn ich versuche, den Container eines Standard- Widget-Steuerelements so zu erreichen
alert(wp.customize.control('widget_search-2').container.length);
Ich bekomme Uncaught TypeError: Kann die Eigenschaft ‘container’ von undefined nicht lesen
Ich verstehe, dass ich dieses Standard- Widget-Steuerelement nicht definiert / erstellt habe, aber WP tat, jedoch hat dieses Steuerelement id = “customize-control-widget_search-2” ?!
Der Teil, der mich verrückt macht, ist der, wenn ich versuche:
alert(wp.customize.section('sidebar-widgets-sidebar-1').controls().length);
Das DOM kann alle Steuerelemente des Standard-Widgets in diesem Sidebar-1-Abschnitt sehen, der von WP erstellt wurde!
Vielen Dank im Voraus für jede Hilfe.
Sie sollten warten, bis das Steuerelement garantiert erstellt wird. Es gibt ein verzögertes Muster, das Sie verwenden sollten:
wp.customize.control('widget_search[2]', function( control ) { // ... console.info( control.container ); // ... });
Außerdem ist das ID-Format für Widget-Customizer-Steuerelemente widget_search[2]
nicht widget_search-2
. Beachten Sie den Unterschied zur DOM-Element-ID.