In meinem WordPress-Widget verwende ich den folgenden Code:
wp_register_script('jquery-ui.widget', plugins_url('assets/js/jquery-ui-1.9.2.widget.js', dirname( __FILE__ )));
Leider gibt mir der Code eine ungültige URL, die mit meinem Systempfad gemischt ist:
http://test.dev/wp-content/plugins/C:/projects/wordpress/plugins/assets/js/jquery-ui-1.9.2.widget.js?ver=3.6
Hat dieses Problem möglicherweise damit zu tun, dass ich eine lokale WordPress-Installation auf einem Windows-Computer (mit Apache 2) habe?
jquery-ui.widget
ist eines der Standardskripte, die bereits in WP enthalten und registriert sind. Sie müssen es nicht registrieren, sondern müssen es nur in eine Warteschlange stellen.dirname
in plugin_url
falsch. Lasse nur __FILE__
als zweites Argument von plugins_url
jquery-ui.widget
ist eines der Standard-WordPress-Skripte , sodass Sie in den meisten Fällen die von Ihnen hochgeladene Datei nicht verwenden müssen/müssen. aber nur mit der kopie in der wp installation.
In diesem Fall müssen Sie das Skript nicht registrieren, da es bereits registriert ist. Sie müssen es nur mit wp_enqueue_script('jquery-ui-widget')
in die Warteschlange stellen.
Dadurch wird die mit Wordpress gelieferte Version des Skripts korrekt in die Warteschlange gestellt. In der aktuellen Version von WP (3.6) befindet sich 'jqueri-ui widget' in Version '1.10.3'.
Haben Sie ein Problem mit dieser Version? Versuchen Sie, sie zu lösen ... auch, weil das Einbeziehen Ihrer älteren Version nicht sicher ist, dass Sie keine Probleme haben werden: Wenn ein anderes Plugin oder Thema die WP -Version desselben Skripts enthält, kann ich Ihnen das Vergnügen geben, sich vorzustellen, was passiert.
Wenn wir vergessen, dass Sie versuchen, eines der WP Standardskripte einzuschließen, liegt das Problem, das Ihr Code hat, in der Funktion plugins_url
.
Doc für das zweite Argument von plugins_url
im Codex ist nicht das klarste, das ich je gesehen habe:
$plugin
- Pfad unter dem Plugin-Verzeichnis, zu welchem übergeordneten Verzeichnis der $ -Pfad relativ sein soll.
Ist nicht klar genug, ob wir den Verzeichnispfad (genau wie Sie) oder den vollständigen Pfad (mit Dateinamen) übergeben müssen.
Aber einige Zeilen weiter unten in derselben Codexseite lesen wir: Die Funktion plugins_url()
wird üblicherweise in einer Plugin-Datei verwendet. Wenn Sie die magische Konstante __FILE__
PHP anstelle des Parameters $plugin
übergeben, wird der $path
relativ zum übergeordneten Verzeichnis dieser Datei erstellt.
Jetzt verstehen wir also, dass wir die folgende Funktion verwenden müssen:
wp_register_script('jquery-ui.widget', plugins_url('assets/js/jquery-ui-1.9.2.widget.js', __FILE__ )); // without dirname( )
Damit dieser Code funktioniert, muss er sich in einer Datei im Stammverzeichnis des Plugins befinden. Daher ist es die beste Lösung, ihn in der Haupt-Plugin-Datei abzulegen. Der Grund ist einfach: __FILE__
PHP magic constant enthält immer den vollständigen Pfad der Datei, in die geschrieben ist , auch wenn diese Datei benötigt wird oder in einer anderen enthalten ist. Wenn Sie diesen Code in eine Datei einfügen, die sich in einem inneren Plugin-Verzeichnis befindet, funktioniert er für den Gültigkeitsbereich nicht.
Beachten Sie auch, dass 'assets/js/jquery-ui-1.9.2.widget.js' relativ zur Haupt-Plugin-Datei sein muss, sodass 'assets' ein Unterordner der ersten Ebene des Plugin-Stammverzeichnisses sein muss.
Hoffe, es hilft dir.