Я хотел сделать запрет загрузки некоторых js на страницах сайта. С CSS все получилось (лишние поотключал или оставил только на тех страницах где используются), а скрипты не отключаются.
1. в примере 4 правила отключения скрипта не работают
add_action( 'wp_print_scripts', 'deregister_recall_javascript', 100 ); function deregister_recall_javascript() { //wp_deregister_script( 'bx-slider' ); // слайдер не использую (при публикациях используется) if ( is_author() !== true ) { wp_deregister_script( 'FileAPI-min' ); // скрипт нужен только в профиле пользователя wp_deregister_script( 'mousewheel-js' ); // FileAPI.exif.js скрипт нужен только в профиле пользователя wp_deregister_script( 'fileapi-pack-js' ); // jquery.fileapi.js скрипт нужен только в профиле пользователя wp_deregister_script( 'Jcrop-buttons-js' ); // jquery.Jcrop.min.js скрипт нужен только в профиле пользователя } }делал и так: if ( !is_author() ) { в общем не отключаются
2. А закоментированный //wp_deregister_script( 'bx-slider' ); - дело в том что он объявлен в другом скрипте и при отключении его выдает ошибку:
Ошибка: TypeError: jQuery(...).bxSlider is not a function
Источник: wp-content/plugins/recall/js/recall.js?ver=4.0
в кодексе пишут что имя не должно быть с большой буквы - FileAPI-min, например (на сайте вп-кама - $handle (строка) (обязательный)
Название скрипта (рабочее название). Строка в нижнем регистре.). Я переводил их в нижний регистр - не помогло. Чувствую что проблема где-то в wp_enqueue_script(), но не осилил.
Андрей подскажи как мне отключить скрипты. В настройках реколл выставлено: Минимизация стилевых файлов - включено. Но думаю что это не важно.
Андрей Plechev сказал(а)
хм, не решал такой задачи ранее. Попробовал согласно кодекса отключить регистрацию скрипта и тоже что то не получилось. Надо покурить эту тему, возможно не в том направлении смотрим или глюк на стороне самого ВП
Нашел recallfunctions-rcl.php:
add_action('wp_footer', 'foot_scripts_uuf'); function foot_scripts_uuf() { if(file_exists(TEMP_PATH.'scripts/footer-scripts.js')){ //get_update_scripts_footer_rcl(); wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'FileAPI-min', RCL_URL.'js/fileapi/FileAPI/FileAPI.min.js' ); wp_enqueue_script( 'mousewheel-js', RCL_URL.'js/fileapi/FileAPI/FileAPI.exif.js' ); wp_enqueue_script( 'fileapi-pack-js', RCL_URL.'js/fileapi/jquery.fileapi.js' ); wp_enqueue_script( 'Jcrop-buttons-js', RCL_URL.'js/fileapi/jcrop/jquery.Jcrop.min.js' ); wp_enqueue_script( 'modal-thumbs-js', RCL_URL.'js/fileapi/statics/jquery.modal.js' ); //wp_enqueue_script( 'footer-js', RCL_URL.'js/fileapi/footer.js' ); wp_enqueue_script( 'footer-js-recall', TEMP_URL.'scripts/footer-scripts.js' ); } }
то-есть:
add_action('wp_footer', 'foot_scripts_uuf');
заменить на:
add_action('wp_enqueue_scripts', 'foot_scripts_uuf');
wp_enqueue_scripts (отличается от wp_enqueue_script) - как я ее сразу не заметил когда вчера сравнивал с внутренностями wp-postratings...блин...
Только во всех wp_enqueue_script надо будет указать чтобы они грузились в футере: wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ) т.е. $in_footer = true
например
add_action('wp_enqueue_scripts', 'foot_scripts_uuf'); function foot_scripts_uuf() { if(file_exists(TEMP_PATH.'scripts/footer-scripts.js')){ //get_update_scripts_footer_rcl(); wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'FileAPI-min', RCL_URL.'js/fileapi/FileAPI/FileAPI.min.js', array(), '1.0.0', true ); wp_enqueue_script( 'mousewheel-js', RCL_URL.'js/fileapi/FileAPI/FileAPI.exif.js', array(), '1.0.0', true ); wp_enqueue_script( 'fileapi-pack-js', RCL_URL.'js/fileapi/jquery.fileapi.js', array(), '1.0.0', true ); wp_enqueue_script( 'Jcrop-buttons-js', RCL_URL.'js/fileapi/jcrop/jquery.Jcrop.min.js', array(), '1.0.0', true ); wp_enqueue_script( 'modal-thumbs-js', RCL_URL.'js/fileapi/statics/jquery.modal.js', array(), '1.0.0', true ); //wp_enqueue_script( 'footer-js', RCL_URL.'js/fileapi/footer.js', array(), '1.0.0', true ); wp_enqueue_script( 'footer-js-recall', TEMP_URL.'scripts/footer-scripts.js', array(), '1.0.0', true ); } }
Но тут встает проблема номер два в начале поста. Т.е. добавляется:
Ошибка: TypeError: FileAPI.support is undefined
Источник: wp-content/plugins/recall/js/fileapi/jquery.fileapi.js?ver=1.0.0
Строка: 84
И эта ошибка блокирует выполнение других скриптов