Для вывода данных на экран и в файл хочу применить внешние js библиотеки, но не могу понять как их подключить к дополнению.
Пробовал прописать такое:
add_action('admin_head','rcl_admin_user_account_scripts_'); function rcl_admin_user_account_scripts_(){ rcl_enqueue_style('rcl_admin_user_account_scripts',rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jexcel.js', __FILE__)); rcl_enqueue_style('rcl_admin_user_account_scripts',rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jdropdown.js', __FILE__)); rcl_enqueue_style('rcl_admin_user_account_scripts',rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jcalendar.js', __FILE__)); rcl_enqueue_script( 'rcl_admin_user_account_scripts', rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jexcel.js', __FILE__)); rcl_enqueue_script( 'rcl_admin_user_account_scripts', rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jdropdown.js', __FILE__)); rcl_enqueue_script( 'rcl_admin_user_account_scripts', rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jcalendar.js', __FILE__)); }
За образец взял стандартное дополнение user-balance, админскую часть. Но скрипты не работают. Есть ли тут не учет каких-то нюансов работы wp-recall или нужно просто разобраться с этими билиотеками?
В админке используйте wp_enqueue_style и wp_enqueue_script - так как rcl_enqueue_style() и rcl_enqueue_script() нужны для минификации и объединения скриптов и стилей (если такую опцию поставили в настройках) для фронетенд части сайта
а дальше все плохо:
1. handle скриптов и стилей (1й аргумент) - должен быть уникальным. Смотрите документацию по wp_enqueue_style и wp_enqueue_script
2. rcl_addon_url применяете неверно. Смотрите документацию по wp_enqueue_style и wp_enqueue_script
Здравствуйте!
Переписал подключение следующим образом:
add_action('admin_enqueue_scripts','rcl_admin_user_account_scripts_export_addon'); function rcl_admin_user_account_scripts_export_addon(){ wp_enqueue_style('jquery-jexcel-css','https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/css/jquery.jexcel.min.css', NULL, true); wp_enqueue_style('jquery-jdropdown-css','https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/css/jquery.jdropdown.min.css', NULL, true); wp_enqueue_style('jquery-jcalendar-css','https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/css/jquery.jcalendar.min.css', NULL, true); wp_enqueue_script( 'jquery-jexcel-js', 'https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jexcel.js', NULL, true); wp_enqueue_script( 'jquery-jdropdown-js', 'https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jdropdown.js', NULL, true); wp_enqueue_script( 'jquery-jcalendar-js', 'https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jcalendar.js', NULL, true); }
Ошибки в консоли браузера исчезли, скрипты подключились.
Дальше сделал следующим образом:
echo "<script>"; echo "data = "; $dataPayments = "["; foreach ($allPayments as $payment) { $dataPayments .= "["; foreach ($payment as $cell) { $dataPayments .= htmlspecialchars($cell) . ", "; } substr_replace($dataPayments, "", -1); substr_replace($dataPayments, "", -1); $dataPayments .= "],n"; } $dataPayments .= '];'; echo $dataPayments; echo 'jQuery("#my-show-export-addon-js").jexcel({'; echo ' data:data,'; echo ' colHeaders: [ "Country", "Description", "Type", "Stock", "Next purchase", "Type", "Stock", "Next purchase" ],'; echo ' colWidths: [ 300, 80, 100, 60, 120, 100, 60, 120 ],'; echo ' columns: ['; echo ' { type: "number" },'; echo ' { type: "number" },'; echo ' { type: "number" },'; echo ' { type: "text" },'; echo ' { type: "text" },'; echo ' { type: "text" },'; echo ' { type: "text" },'; echo ' { type: "text" },'; echo ' ]'; echo '});'; echo 'jQuery("#my-download-export-addon-js").on("click", function () {'; echo ' jQuery("#my-show-export-addon-js").jexcel("download");'; echo '});'; echo '</script>';
Ajax для передачи данных использовать не стал, решил пока по-проще сделать.
Вышеприведеный скрипт в консоли отображается, то есть в доде страницы присутствует, но не работает. Может его тоже необходимо вынести в хидер или футер? Или такая конструкция в принципе не допустима?