Подключение js в functions.php в WordPress


webledi
676

Добрый день!

Были добавлены скрипты в теме в файле footer.php под кодом

<?php wp_footer(); ?>

<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/jquery.js"></script><!-- jquery -->

<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/bootstrap.js"></script><!-- Bootstrap Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/jquery.flexslider.js"></script><!-- Flexslider Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/jquery.easytabs.min.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/easytabs-settings.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/jquery.magnific-popup.js"></script>
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/link-scroll.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/popup-setting.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/countdown.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/owl.carousel.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/owl.carousel.min.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/owl-settings.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/settings.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/forms.js"></script><!-- Contact Form Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/modernizr-2.6.2.min.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/jquery.zoomslider.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/jquery.zoomslider.min.js"></script><!-- Settings Js -->
<script src="https://searchengines.guru/ru/forum/<?php%20echo%20get_stylesheet_directory_uri();%20?>/js/share.js"></script><!-- Share Js -->

Правильнее подключать js в файле functions.php, сделала вот так:

function my_scripts_method() {

wp_enqueue_script( 'jquery', get_template_directory_uri() . '/js/jquery.js' );
wp_enqueue_script( 'bootstrap', get_template_directory_uri() . '/js/bootstrap.js', true );
wp_enqueue_script( 'jquery.flexslider', get_template_directory_uri() . '/js/jquery.flexslider.js', true, array('jquery') );
wp_enqueue_script( 'jquery.easytabs.min', get_template_directory_uri() . '/js/jquery.easytabs.min.js', true, array('jquery') );
wp_enqueue_script( 'easytabs-settings', get_template_directory_uri() . '/js/easytabs-settings.js', true );
wp_enqueue_script( 'jquery.magnific-popup', get_template_directory_uri() . '/js/jquery.magnific-popup.js', true, array('jquery') );
wp_enqueue_script( 'link-scroll', get_template_directory_uri() . '/js/link-scroll.js', true );
wp_enqueue_script( 'popup-setting', get_template_directory_uri() . '/js/popup-setting.js', true );
wp_enqueue_script( 'countdown', get_template_directory_uri() . '/js/countdown.js', true );
wp_enqueue_script( 'owl.carousel', get_template_directory_uri() . '/js/owl.carousel.js', true );
wp_enqueue_script( 'owl.carousel.min', get_template_directory_uri() . '/js/owl.carousel.min.js', true );
wp_enqueue_script( 'owl-settings', get_template_directory_uri() . '/js/owl-settings.js', true );
wp_enqueue_script( 'settings', get_template_directory_uri() . '/js/settings.js', true );
wp_enqueue_script( 'forms', get_template_directory_uri() . '/js/forms.js', true );
wp_enqueue_script( 'modernizr-2.6.2.min', get_template_directory_uri() . '/js/modernizr-2.6.2.min.js', true );
wp_enqueue_script( 'jquery.zoomslider', get_template_directory_uri() . '/js/jquery.zoomslider.js', true, array('jquery') );
wp_enqueue_script( 'jquery.zoomslider.min', get_template_directory_uri() . '/js/jquery.zoomslider.min.js', true, array('jquery') );
wp_enqueue_script( 'share', get_template_directory_uri() . '/js/share.js', true );

}
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );

После очистки кеша страница сайта не открывается видимо из-за неработающих скриптов. При просмотре исходного кода страницы ссылки на js верные.

Помогите, пожалуйста, правильно подключить скрипты в functions.php


LEOnidUKG

После очистки кеша страница сайта не открывается

Что значит не открывается?


webledi

Крутится loader.gif, но контент не показывается, как будто какой-то скрипт не подгрузился.


LEOnidUKG

webledi:
Крутится loader.gif, но контент не показывается, как будто какой-то скрипт не подгрузился.

В смысле какой то? 🙂

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


webledi

Показывает вот такие ошибки:

Uncaught TypeError: $ is not a function
at easytabs-settings.js:8
at easytabs-settings.js:15
link-scroll.js:4 Uncaught TypeError: $ is not a function
at link-scroll.js:4
popup-setting.js:7 Uncaught TypeError: $ is not a function
at popup-setting.js:7
at popup-setting.js:30
owl-settings.js:12 Uncaught TypeError: $ is not a function
at owl-settings.js:12
at owl-settings.js:49
settings.js:28 Uncaught TypeError: $ is not a function
at settings.js:28
at settings.js:106
forms.js:14 Uncaught TypeError: $ is not a function
at forms.js:14
at forms.js:137

Это ошибка в самих скриптах или ошибка подключения скриптов?

Если добавить вывод скриптов в файле footer.php, то такие ошибки консоль не показывает.


timo-71

webledi:
get_stylesheet_directory_uri

Жесть😮 Сколько ж раз дернули функцию, где (не поленился) вызываются еще 2 функции:


#https://wp-kama.ru/function/get_stylesheet_directory_uri
function get_stylesheet_directory_uri() {
$stylesheet = str_replace( '%2F', '/', rawurlencode( get_stylesheet() ) );
$theme_root_uri = get_theme_root_uri( $stylesheet );

А там еще функции

function get_stylesheet() {
/**
* Filters the name of current stylesheet.
*
* @since 1.5.0
*
* @param string $stylesheet Name of the current stylesheet.
*/
return apply_filters( 'stylesheet', get_option( 'stylesheet' ) );
}

, которые в свою очередь

function get_option( $option, $default = false ) {
global $wpdb;

дальше не смотрел, не не удивлюсь, если и до запроса к БД с учетом global $wpdb; дойдет😂

————————

По теме:

С учетом

Uncaught TypeError: $ is not a function
at easytabs-settings.js:8

вероятно джиквери нет в get_stylesheet_directory_uri(). Ну или jquery не той системы, $(…).func() не функция


LEOnidUKG

Uncaught TypeError: $ is not a function

JQ не подключен у вас. Вообще подключать JQ в футере это дело очень сомнительное.

———- Добавлено 18.03.2020 в 21:04 ———-

Ну и как выше уже написали дёргать get_template_directory_uri() не нужно каждый раз.

Хотя оптимизация и разработчики на WP, это вообще люди из разных миров 🙂


Sitealert

webledi:
сделала вот так:

Ничего не смущает?

get_stylesheet_directory_uri()

get_template_directory_uri()


LEOnidUKG

Хотя вот подключение файлов из официальной темы:

Подключение js в functions.php в Wordpress

Поэтому думаю, там какой-то кэш срабатывает для этого.

———- Добавлено 18.03.2020 в 21:10 ———-

Sitealert:
Ничего не смущает?

get_stylesheet_directory_uri()

get_template_directory_uri()

Блин, точняк, функции разные 😀


webledi

get_stylesheet_directory_uri()

get_template_directory_uri()

По обоим кодам показываются правильные пути к скриптам.

Напишите, пожалуйста, правильный код для функции подключения, и чтобы не дергать функцию много раз.


Sitealert

Сайт покажите.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *