Tôi gặp phải vấn đề này khi cố gắng tích hợp API trình chọn của Dropbox vào plugin tôi đang viết.
Tài liệu API hướng dẫn bạn đặt script
thẻ sau vào đầu tệp của bạn:
<script type="text/javascript" src="https://www.dropbox.com/static/api/1/dropins.js" id="dropboxjs" data-app-key="MY_APP_KEY"></script>
Tất cả đều tốt và tốt, và nó thực sự hoạt động khi tôi trực tiếp dán nó vào trang được gọi trong phần quản trị. Nhưng, tôi muốn sử dụng một số biến thể của wp_register_script (), wp_enqueue_script () và wp_localize_script () để truyền id và khóa ứng dụng dữ liệu cần thiết.
Tôi đã thử một vài biến thể khác nhau của điều này:
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"));
}
Và:
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 được thay thế bằng khóa ứng dụng phù hợp trong mã của tôi. Sẽ đánh giá cao bất kỳ hướng. Cảm ơn.
EDIT: Cũng đã cố gắng làm điều đó với một số jquery, nhưng không có kết quả. Đã thử nó trên tải tài liệu và trên tài liệu đã sẵn sàng. Tôi nhận được trả về {"lỗi": "Không hợp lệ app_key"}.
$('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
không tạo thuộc tính tập lệnh. Nhưng có thể chuyển khóa ứng dụng trực tiếp vào dropbox.js không? Chỉ là một phỏng đoán nhưng bạn đã thử array('appKey'=>"MY_APP_KEY")
? Đây là mã lấy khóa từ thuộc tínhif(!Dropbox.appKey){Dropbox.appKey=(e=document.getElementById("dropboxjs"))!=null?e.getAttribute("data-app-key"):void 0}
wp_localize_script
chắc chắn bạn có thể chuyển các thuộc tính cho tập lệnh. Tôi thực sự không biết điều này có hiệu quả hay không, tuy nhiên nó không phải là vấn đề liên quan.
wp_localize_script
cần làm là in một đối tượng được mã hóa json trong đầu ra html của trang. Đối tượng này được nhận dạng bởi tập lệnh và vì vậy bạn có thể sử dụng nó. Những gì bạn cần là thêm một số thuộc tính vào thẻ script và vì vậywp_localize_script
không thể giúp bạn.