Ich habe ein WordPress-Widget, das die Standardkontur wie folgt hat:
class my_widget extends WP_Widget{
function my_widget(){
//do setup stuff
}
function form(){
//do form stuff
}
function update(){
//do update stuff
}
function widget($args, $instance){
//how can we dynamically add style and script here
//this does not work
if($instance['val'] == 'test'){
wp_register_script('test', plugins_url('test.js');
wp_print_scripts('test');
}else{
wp_register_script('diff', plugins_url('diff.js');
wp_print_scripts('diff');
}
}
}}
Ich frage mich, ob es möglich ist, Skripte dynamisch zu einem WordPress-Widget hinzuzufügen ... Ich vermute, dass dies innerhalb der Widget () -Methode b / c erfolgen müsste, die der einzige Ort ist, an dem dynamische Variablen übergeben werden, aber die Problem ist, dass diese Funktion nach dem Hinzufügen von Skripten ausgelöst zu werden scheint.
Danke für deine Gedanken
Antworten:
Ich ziehe diesen Code aus meinem Total Widget Control- Plugin, sodass möglicherweise ein oder zwei Fehler auftreten. Ich weiß nicht, lass es mich wissen, wenn es so ist. Dies ist im Grunde der Widget-Code, den ich für alles verwende, was ich erstelle.
Sobald Sie dies in Ihre Datei functions.php eingefügt haben, können Sie innerhalb von Sekunden neue Widgets deklarieren. Hier ist der Code zum Deklarieren eines neuen Widgets.
Deklarieren Sie die gewünschten Felder für Ihre Widget-Optionen mit dem obigen Array, und Sie sind fast fertig.
Als letztes müssen Sie Ihren Widgets-HTML-Code in Ihren neuen Dateipfad / to / my / widget_view_file.php einfügen
Fügen Sie oben in dieser Widget-Ansichtsdatei den folgenden Code hinzu:
<?php extract($args[1]); ?>
Dadurch werden drei Variablen aufgeteilt, die Sie verwenden können:quelle
Dieses Widget stellt alle möglichen erforderlichen Skripte für die Fußzeile in die Warteschlange, setzt jedoch auch einen Haken
wp_print_footer_scripts
, mit dem die Skripte vor dem Drucken abgemeldet werden, es sei denn, Sie ändern das Array beim Drucken des Widgets.quelle
Möchten Sie ein Skript nur dann auslösen, wenn das Widget verwendet wird?
quelle
Sie können die
WP_Widget
Klasse erweitern und Ihre Init-Inhalte zum Konstruktor hinzufügen oder diewidget()
Methode mit Ihrem geänderten Code überladen . Z.Bquelle