Я столкнулся с этим, когда пытался интегрировать Dropbox Drop Chooser API в плагин, который я пишу.
Документация по API предписывает вам разместить следующий script
тег в верхней части вашего файла:
<script type="text/javascript" src="https://www.dropbox.com/static/api/1/dropins.js" id="dropboxjs" data-app-key="MY_APP_KEY"></script>
Все хорошо, и это действительно работает, когда я непосредственно вставляю его в страницу, которая вызывается в разделе администратора. Но я хотел бы использовать некоторые варианты wp_register_script (), wp_enqueue_script () и wp_localize_script () для передачи необходимого идентификатора и data-app-key.
Я пробовал пару разных вариантов этого:
add_action('admin_enqueue_scripts', 'add_dropbox_stuff');
function add_dropbox_js() {
wp_register_script('dropbox.js','https://www.dropbox.com/static/api/1/dropins.js');
wp_enqueue_script('dropbox.js');
wp_localize_script('dropbox.js','dropboxdata',array('id'=>"dropboxjs",'data-app-key'=>"MY_APP_KEY"));
}
И:
add_action('admin_enqueue_scripts', 'add_dropbox_stuff');
function add_dropbox_stuff() {
wp_register_script('dropbox.js','https://www.dropbox.com/static/api/1/dropins.js');
wp_enqueue_script('dropbox.js');
wp_localize_script('dropbox.js','dropboxdata',array(array('id'=>"dropboxjs"),array('data-app-key'=>"MY_APP_KEY")));
}
MY_APP_KEY заменен соответствующим ключом приложения в моем коде. Был бы признателен за любое направление. Благодарю.
РЕДАКТИРОВАТЬ: Также пытался сделать это с некоторыми jquery, но безрезультатно. Попробовал его при загрузке документа и при готовности документа. Я получаю {"error": "Invalid app_key"} return.
$('script[src="https://www.dropbox.com/static/api/1/dropins.js?ver=3.6"]').attr('id','dropboxjs').attr('data-multiselect','true').attr('data-app-key','MY_APP_KEY');
wp_localize_script
не создает атрибуты сценария. Но можно ли передать ключ приложения прямо в dropbox.js? Просто предположение, но вы пробовали array('appKey'=>"MY_APP_KEY")
? Это код, который получает ключ от атрибутаif(!Dropbox.appKey){Dropbox.appKey=(e=document.getElementById("dropboxjs"))!=null?e.getAttribute("data-app-key"):void 0}
wp_localize_script
уверенностью вы можете передать атрибуты в сценарий. Я действительно не знаю, сработает ли это или нет, однако это не связано с проблемами.
wp_localize_script
нужно сделать, это напечатать json-кодированный объект в html-выводе страницы. Этот объект распознается сценарием, и вы можете использовать его. То, что вам нужно, это добавить некоторые атрибуты в тег скрипта, и поэтомуwp_localize_script
не может помочь вам.