Подтвердить что ты не робот

URL-адрес пути WordPress в файле js script

Я добавил пользовательский script:

wp_enqueue_script('functions', get_bloginfo('template_url') . '/js/functions.js', 'search', null, false);

Он отлично работает, кроме functions.js у меня есть:

Reset.style.background = "url('../images/searchfield_clear.png') no-repeat top left";

Раньше это работало до тех пор, пока я не переменился на довольно постоянные ссылки и .htaccess

Иерархия папок похожа:

themename/js themename/images (изображения и папка js находятся в папке с именами)

Я пробовал.. /images -./image -/images

Обычно он должен возвращаться на 1 уровень, где находится файл js....

Я не хочу использовать полный путь.

Есть ли другой способ, который WordPress может распознать в файле javascript, чтобы иметь правильный путь?

В настоящее время я просто смущен тем, что делаю неправильно.

4b9b3361

Ответ 1

Вы можете избежать жесткого кодирования полного пути, установив JS-переменную в заголовок вашего шаблона, до вызова wp_head(), удерживая URL-адрес шаблона. Как:

<script type="text/javascript">
var templateUrl = '<?= get_bloginfo("template_url"); ?>';
</script>

И используйте эту переменную для установки фона (я понимаю, что вы знаете, как это сделать, я включаю только эти данные, если они помогают другим):

Reset.style.background = " url('"+templateUrl+"/images/searchfield_clear.png') ";

Ответ 2

Согласно документации Wordpress, вы должны использовать wp_localize_script() в файле functions.php. Это создаст объект Javascript в заголовке, который будет доступен для ваших скриптов во время выполнения.

См. Codex

Пример:

<?php wp_localize_script('mylib', 'WPURLS', array( 'siteurl' => get_option('siteurl') )); ?>

Чтобы получить доступ к этой переменной внутри Javascript, вы просто выполните:

<script type="text/javascript">
    var url = WPURLS.siteurl;
</script>

Ответ 3

    wp_register_script('custom-js',WP_PLUGIN_URL.'/PLUGIN_NAME/js/custom.js',array(),NULL,true);
    wp_enqueue_script('custom-js');

    $wnm_custom = array( 'template_url' => get_bloginfo('template_url') );
    wp_localize_script( 'custom-js', 'wnm_custom', $wnm_custom );

и в custom.js

alert(wnm_custom.template_url);

Ответ 4

Если файл javascript загружен из панели управления admin, эта функция javascript предоставит вам корень вашей установки WordPress. Я использую это много, когда создаю плагины, которые должны делать ajax-запросы с панели управления admin.

function getHomeUrl() {
  var href = window.location.href;
  var index = href.indexOf('/wp-admin');
  var homeUrl = href.substring(0, index);
  return homeUrl;
}