Для вывода данных на экран и в файл хочу применить внешние 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 для передачи данных использовать не стал, решил пока по-проще сделать.
Вышеприведеный скрипт в консоли отображается, то есть в доде страницы присутствует, но не работает. Может его тоже необходимо вынести в хидер или футер? Или такая конструкция в принципе не допустима?