Домой Wp-Recall WP-Recall: Проблемы и решения Не могу отключить загрузку js, а отключая слайдер получаю error
5ответ(ов) в теме
Вова (Otshelnik-Fm)
не в сети 2 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
1
18:45

Я хотел сделать запрет загрузки некоторых 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(), но не осилил.

Андрей подскажи как мне отключить скрипты. В настройках реколл выставлено: Минимизация стилевых файлов - включено. Но думаю что это не важно.

0
Андрей CS
не в сети 3 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16856
2
21:20

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

0
Вова (Otshelnik-Fm)
не в сети 2 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
3
22:07

Андрей 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

И эта ошибка блокирует выполнение других скриптов

0
Вова (Otshelnik-Fm)
не в сети 2 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
4
22:11

забыл в первой записи указать строку с ошибкой:

Ошибка: TypeError: jQuery(...).bxSlider is not a function
Источник: wp-content/plugins/recall/js/recall.js?ver=4.0
Строка: 43

0
Вова (Otshelnik-Fm)
не в сети 2 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
5
22:49

Вы не можете просматривать опубликованные ссылки

пример там интересный и комментарий что wp_enqueue_scripts подходит не только для скриптов, но и стилей!

Теперь как бы решить вопрос с второй ошибкой и внедрением совместимости с отключениями скриптов пользователями.

0
Тема закрыта. Публикация новых сообщений запрещена.