私のWordPressウィジェットでは、次のコードを使用しています。
wp_register_script('jquery-ui.widget', plugins_url('assets/js/jquery-ui-1.9.2.widget.js', dirname( __FILE__ )));
残念ながら、このコードは私のシステムパスと混ざっている無効なURLを教えてくれます。
http://test.dev/wp-content/plugins/C:/projects/wordpress/plugins/assets/js/jquery-ui-1.9.2.widget.js?ver=3.6
この問題は、ローカルのWordPressインストールが(Apache 2の)Windowsコンピュータで実行されているという事実に関連しているのでしょうか。
jquery-ui.widget
は、WPに既に含まれ登録されている標準スクリプトの1つです。登録する必要はありません。エンキューするだけです。plugin_url
の中のdirname
関数です。 __FILE__
の2番目の引数としてplugins_url
のみを残しますjquery-ui.widget
は 標準のワードプレススクリプト の1つです。そのため、ほとんどの場合、自分でアップロードしたファイルを使用する必要はありません。しかし、WPのインストールでコピーを使用するだけです。
この場合、スクリプトを登録する必要はありません。スクリプトはすでに登録されているため、wp_enqueue_script('jquery-ui-widget')
を使用してエンキューするだけで済みます。
これにより、Wordpressに付属のスクリプトのバージョンが正しくエンキューされます。現在のバージョンのWP(3.6)では、 'jqueri-ui widget'はバージョン '1.10.3'です。
このバージョンに問題がありますか?他のプラグインやテーマに同じスクリプトのWPバージョンが含まれている場合はどうなるか想像してみてください。
WP標準スクリプトのいずれかをインクルードすることを忘れている場合、コードの問題はplugins_url
関数にあります。
コーデックス のplugins_url
の2番目の引数のドキュメントは、私が今まで見た中で最も明確なものではありません。
$plugin
- どの親ディレクトリのプラグインディレクトリの下のパスを$ pathにするかを指定します。
ディレクトリパス(あなたがするのと同じように)またはフルパス(ファイル名を含む)を渡す必要があるかどうかは十分に明確ではありません。
しかし、同じコーデックスページで以下の数行を読みます。plugins_url()
関数はプラグインファイルで一般的に使用されています。 __FILE__
パラメータの代わりに$plugin
PHPマジック定数を渡すと、$path
はそのファイルの親ディレクトリからの相対パスになります
だから、今我々は我々がそのように機能を使用する必要があることを理解しています:
wp_register_script('jquery-ui.widget', plugins_url('assets/js/jquery-ui-1.9.2.widget.js', __FILE__ )); // without dirname( )
ただし、このコードを機能させるには、プラグインのルートディレクトリにあるファイルに含める必要があるため、最善の解決策はメインプラグインファイルに置くことです。理由は簡単です。__FILE__
PHP magic constantには、このファイルが必須であるか別のファイルに含まれている場合でも、常にと書かれたファイルのフルパスが入ります。ですから、このコードを内側のプラグインディレクトリに置かれたファイルに入れても、その範囲ではうまくいきません。
'assets/js/jquery-ui-1.9.2.widget.js'はメインのプラグインファイルからの相対パスでなければならないので、 'assets'はプラグインルートの最初のレベルのサブフォルダでなければなりません。
それがあなたを助けてくれることを願っています。