lamo4ok
@lamo4ok
Программист

Как в Wordpress правильно указывать путь до темы оформления в js-скриптах?

Есть некая тема, находящая по пути вида "wp-content/themes/theme". Есть папка js внутри нее, в которой в свою очередь лежит скрипт, использующий внутри себя код вида:
include('js/jquery.cookie.js');
где должны подключаться скрипты из той же папки, что и сам исполняемый скрипт. Естественно, такой код не работает, укажи ты хоть со слешем, хоть без, хоть вообще без папки - путь считается не от исполняемого скрипта, а от страницы, его вызвавшей.

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

Заранее спасибо!
Уточнение: при использовании include вокруг него как правило присутствует логика, так что использовать подключение скрипта по умолчанию через wp_enqueue_script не вариант.
  • Вопрос задан
  • 1221 просмотр
Решения вопроса 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Примерно вот так (поместить в файл functions.php):
function wpdocs_theme_name_scripts() {
    wp_enqueue_style( 'style-name', get_stylesheet_uri() );
    wp_enqueue_script( 'script-name', get_template_directory_uri() . '/js/example.js', array(), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'wpdocs_theme_name_scripts' );

Подробнее можно почитать в документации.

Если подключается в дочерней теме, то вместо функции get_template_directory_uri() нужно использовать get_stylesheet_directory_uri().

Уточнение ответа по поводу использования этих функций в js.
Вариант 1.
Добавить переменную для javascript с помощью хука wp_head
function my_js_variables() { ?>
      <script type="text/javascript">
        var templateUrl = '<?php get_template_directory_uri(); ?>';
      </script><?php
}
add_action ( 'wp_head', 'my_js_variables' );

Ну и затем пользоваться ей как обычной js-переменной.

Вариант 2.
Воспользоваться функцией wp_localize_script
wp_enqueue_script( 'my-script', get_template_directory_uri() . '/js/example.js' );
$translation_array = array( 'templateUrl' => get_template_directory_uri() );
wp_localize_script( 'my-script', 'themename', $translation_array );

Затем в нужном месте получить значение
var templateUrl = themename.templateUrl;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alone_lion1987
@alone_lion1987
Веб-разработчик
Используйте следующее:

<? bloginfo("template_url") ?>/js/...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы