URL-адрес пути WordPress в файле сценария js - PullRequest
42 голосов
/ 07 марта 2011

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

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 (папка images и js находятся в папке themename)

Я пытался../images - ./image - / images

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

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

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

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

Ответы [ 5 ]

98 голосов
/ 08 марта 2011

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

См. Кодекс

Пример:

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

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

<script type="text/javascript">
    var url = WPURLS.siteurl;
</script>
62 голосов
/ 07 марта 2011

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

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

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

23 голосов
/ 12 ноября 2012
    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);
2 голосов
/ 14 июня 2016

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

function getHomeUrl() {
  var href = window.location.href;
  var index = href.indexOf('/wp-admin');
  var homeUrl = href.substring(0, index);
  return homeUrl;
}
0 голосов
/ 09 мая 2018

Для пользователей, работающих с платформой Genesis.

Добавьте следующее в тему вашего ребенка functions.php

add_action( 'genesis_before', 'script_urls' );

function script_urls() {
?>
    <script type="text/javascript">
     var stylesheetDir = '<?= get_bloginfo("stylesheet_directory"); ?>';
    </script>
<?php
}

И используйте эту переменную, чтобы установить относительный URL в вашем скрипте. Например:

Reset.style.background = " url('"+stylesheetDir+"/images/searchfield_clear.png') ";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...