✏️ 正在编辑: avatar-picker.js
路径:
/home/h359620/public_html/wp-content/themes/datis/assets/js/avatar-picker.js
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
/*! * Datis Avatar Uploader (Frontend) * * Purpose: * - Provides a controlled fallback avatar uploader on WooCommerce "My Account" pages. * - Avoids WordPress Media Library (wp.media) to prevent async-upload.php / wp-admin redirects (302). * - Opens a native file picker, uploads selected image immediately via AJAX, then reloads the page. * * Expected HTML: * - A clickable element with: * data-datis-avatar-picker="1" * data-picker-disabled="0|1" * * Localized object: * - window.DatisAvatar = { * ajax_url: ".../wp-admin/admin-ajax.php", * nonce: "....", * i18n_select_file: "...", * i18n_uploading: "...", * i18n_failed: "..." * } */ jQuery(function ($) { if (typeof DatisAvatar === "undefined" || !DatisAvatar.ajax_url) return; function createHiddenFileInput() { var $input = $('<input type="file" accept="image/png,image/jpeg" style="display:none" />'); $("body").append($input); return $input; } function uploadFile(file) { var fd = new FormData(); fd.append("action", "datis_upload_fallback_avatar"); fd.append("nonce", DatisAvatar.nonce); fd.append("file", file); return $.ajax({ url: DatisAvatar.ajax_url, method: "POST", data: fd, processData: false, contentType: false, dataType: "json", }); } function openPickerAndUpload() { var $input = createHiddenFileInput(); $input.on("change", function () { var file = this.files && this.files[0]; if (!file) { $input.remove(); return; } // Quick client-side guard (server-side validation still applies) var ok = file.type === "image/png" || file.type === "image/jpeg"; if (!ok) { alert(DatisAvatar.i18n_failed || "Upload failed."); $input.remove(); return; } uploadFile(file) .done(function (res) { if (res && res.success) { window.location.reload(); return; } alert(DatisAvatar.i18n_failed || "Upload failed."); }) .fail(function () { alert(DatisAvatar.i18n_failed || "Upload failed."); }) .always(function () { $input.remove(); }); }); $input.trigger("click"); } $(document).on("click", '[data-datis-avatar-picker="1"]', function (e) { var $btn = $(this); var disabled = String($btn.data("picker-disabled")) === "1"; if (disabled) { e.preventDefault(); return; } e.preventDefault(); openPickerAndUpload(); }); });
💾 保存文件
← 返回文件管理器