plugins_url функционируют системный путь смесей и URL

В моем виджете 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, работающая на компьютере Windows (с Apache 2)?

1
05.08.2013, 01:18
1 ответ

Короткий ответ

  1. jquery-ui.widget один из стандартных сценариев, уже включенных и зарегистрированных в WP. Вы не должны регистрировать его, просто ставить в очередь.
  2. В Вашем коде что не так dirname функция внутри plugin_url. Отпуск только __FILE__ как второй аргумент plugins_url

Длинный ответ:Подробнее

jquery-ui.widget один из стандартных сценариев Wordpress так, в большинстве случаев, Вы не должны делать не, должны использовать файл, загруженный собой, но просто использованием копии в wp установке.

В этом случае Вы не должны регистрировать сценарий, потому что он уже регистрируется, необходимо только ставить в очередь использование wp_enqueue_script('jquery-ui-widget').

Это будет ставить в очередь правильно версию сценария, который идет с Wordpress. В текущей версии WP (3.6), 'jqueri-ui виджет' находится в версии '1.10.3'.

У Вас есть некоторая проблема с этой версией? Попытайтесь решить их... также, потому что включая Вашу более старую версию не гарантируют, что у Вас не будет проблем: если другой плагин или тема включают версию WP того же сценария, я позволяю Вам удовольствие вообразить то, что происходит.

Если мы забываем, что Вы - Тринг для включения одного из стандартного сценария WP, проблема, которую имеет код, расположена в plugins_url функция.

Документ для второго аргумента plugins_url в кодексе не является самым ясным, я когда-либо видел:

$plugin - Путь в соответствии с каталогом плагинов, которого родительского каталога Вы хотите, чтобы $path был относительно.

Не достаточно ясно, если мы должны передать путь к каталогу (точно так же, как Вы делаете), или полный путь (с именем файла).

Но несколько строк ниже на той же странице кодекса мы читаем: plugins_url() функция является наиболее часто используемой в сменном файле. Передача __FILE__ Волшебство PHP, постоянное вместо $plugin параметр делает $path относительно родительского каталога того файла

Так, теперь мы понимаем, что должны использовать функцию как так:

wp_register_script('jquery-ui.widget', plugins_url('assets/js/jquery-ui-1.9.2.widget.js', __FILE__ )); // without dirname( )

Но заметьте, что, чтобы заставить этот код работать, это должно быть в файле, расположенном в корневом каталоге плагина, таким образом, лучшее решение помещается это в основном сменном файле. Причина проста: __FILE__ Постоянное волшебство PHP всегда содержит полный путь файла, в котором записан, даже если этот файл требуется или включается в другого. Таким образом, при помещении этого кода в файл, помещенный во внутренний сменный каталог он не работает на объем.

Обратите внимание также, что 'assets/js/jquery-ui-1.9.2.widget.js'' должен быть относительно основного сменного файла, таким образом, 'активы' должны быть первой подпапкой уровня сменного корня.

Надежда это выручает Вас.

3
19.02.2020, 22:48
  • 1
    Привет G.M., спасибо за этот очень подробный ответ. Это действительно похвально! Я попробовал его без "dirname", но это не помогло. Я думаю, что это, вероятно, потому что мои файлы присутствуют как символьные ссылки и __, ФАЙЛ __ не может обработать это?! Возможно, это помогает: wordpress.stackexchange.com/questions/102681 / … –  Benny Neugebauer 05.08.2013, 23:11
  • 2
    То, что в ответе Вы связываете, является тем же моим кодом, если Вы выполняете wp_register_script из основного сменного файла, поскольку я предлагаю Вас в своем ответе. Если Вы вызываете функцию в каком-либо другом файле, следуют ответу, который Вы связываете. Поскольку отладка присваивает ФАЙЛ переменной и var_dump это... –  gmazzap♦ 06.08.2013, 10:44

Теги

Похожие вопросы