Widget-Skript lädt unten auf der Seite

Ich habe an einem Plugin gearbeitet, das bei Aktivierung ein Skript zur Seitenleiste hinzufügt. Bis jetzt konnte ich den Code zwar anzeigen, aber er lädt am unteren Rand der Seite und nicht in der Seitenleiste.

Ich bin ziemlich neu in der Entwicklung von WordPress-Plugins, so dass detailliertere statementen sehr geschätzt werden.

Hier ist der Link zum Code auf Github.

/** * Front-end display of widget. * * @see WP_Widget::widget() * * @param array $args Widget arguments. * @param array $instance Saved values from database. */ public function widget( $args, $instance ) { echo $args['before_widget']; if ( ! empty( $instance['title'] ) ) { echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ). $args['after_title']; } wp_enqueue_script( 'external-script', 'https://d21djfthp4qopy.cloudfront.net/humanitybox.js', array( 'jquery' ), '1.0.0', true ); //echo __( 'Hello, World!', 'text_domain' ); echo $args['after_widget']; } 

Solutions Collecting From Web of "Widget-Skript lädt unten auf der Seite"

Das ist das erwartete Verhalten, da Sie wp_enqueue_script Mitte der Seite aufrufen, also hat das Schiff an diesem Punkt gesegelt, und die einzige andere Möglichkeit besteht darin, in die Fußzeile zu kommen, was in Ordnung ist.

Ich habe nicht zu viel Zeit damit verbracht, das eigentliche Skript zu lesen, das Sie in die Warteschlange stellen, aber es sieht so aus, als würde es einige document.write() -Dateien erzeugen, sobald es geladen ist, weshalb Sie wahrscheinlich die Ausgabe in der Fußzeile sehen .

Um Ihr Problem zu lösen, würde ich das Skript ein wenig umartikulieren, es in eine function umwandeln, die ein Element akzeptiert und dann in Ihrer Widget-Ausgabe diese function aufruft:

 

Auf diese Weise wartet das Skript darauf, dass Ihre .js-Datei in die Fußzeile geladen wird. Anschließend ruft es die function auf und übergibt die Widget-ID, in die Sie hoffentlich Ihre Ausgabe mit $.html() einfügen können.

Ich hoffe, das hilft!