Как получить путь к плагину в JavaScript?

16 окт. 2014 г., 11:15:14
Просмотры: 14K
Голосов: 3

Я использую плагин wp-store-locator и хочу добавить путь к директории плагина в мой JavaScript.

html = "<li data-store-id='" + id + "'><div><p>" + storeImg + "<strong>" + store + "</strong><span class='wpsl-street'>" + address + "</span>" + address2 + city + " " + state + " " + zip + "</p>" + moreInfo + "<span><a href='plugin-urlpath/store-listings.php' class='more-details'>Подробнее</a></span></div></li>";

return html;

Как я могу это сделать? Путь к плагину указан в конце переменной html.

ОБНОВЛЕНО:

Вот что я сделал:

wp_enqueue_script( 'wpsl-gmap', ( "//maps.google.com/maps/api/js?sensor=false&libraries=places&language=" . $this->settings['api_language'] ), false, '', true ); 
wp_localize_script('wpsl-gmap', 'wpsl-gmap', array('pluginsUrl' => plugins_url(,__FILE__)));

Затем добавил эту строку в wpsl-gmap.js

var href = wpsl-gmap.pluginsUrl + '/path/to/resource';
html = "<li data-store-id='" + id + "'><div><p>" + storeImg + "<strong>" + store + "</strong><span class='wpsl-street'>" + address + "</span>" + address2 + city + " " + state + " " + zip + "</p>" + moreInfo + "<span><a href='" + href + "' class='more-details'>Подробнее</a></span></div></li>";

Ошибок нет, но при этом не отображаются места магазинов.

ПРИМЕЧАНИЕ: До этих изменений все работало корректно.

0
Все ответы на вопрос 1
1
10

Используйте wp_localize_script() для передачи любых данных в ваши загружаемые скрипты. В данном случае нам понадобится plugins_url():

wp_enqueue_script('my-script', get_stylesheet_directory_uri() . '/js/my-script.js');
wp_localize_script('my-script', 'myScript', array(
    'pluginsUrl' => plugins_url(),
));

Теперь у вас будет доступ к myScript.pluginsUrl в вашем файле скрипта:

var href = myScript.pluginsUrl + '/path/to/resource';
16 окт. 2014 г. 18:44:15
Комментарии

Во-первых, второй аргумент wp_localize_script — это имя объекта или переменной, которая будет доступна в JS, и это имя должно содержать только допустимые символы. Дефис - недопустим, поэтому попробуйте использовать wp_localize_script('wpsl-gmap', 'wpslGmap' ... Во-вторых, не знаю, опечатка ли это, но первый аргумент должен быть указан в plugins_url() для передачи второго аргумента, так что исправьте ваш код на plugins_url('', __FILE__).

Ahmad M Ahmad M
16 окт. 2014 г. 21:11:30