WooCommerce script tải frontend và phong cách trong class-wc-frontend-scripts.php
tập tin, và có thể được tìm thấy như thế nào kịch bản đã được đăng ký, enqueued, bản địa hóa và phụ thuộc.
Vị trí ưa thích để chèn mã lệnh trong Wordpress là móc tác vụ wp_enqueue_scripts
, vì đó là thời điểm sau khi Wordpress được nạp đầy đủ nhưng trước khi bất kỳ đầu ra nào được tạo. Và tôi cũng muốn enqueue tất cả các kịch bản liên quan và phong cách của tôi trong một phần của mã.
Khi bạn muốn xóa hoàn toàn một số tập lệnh, hãy gọi wp_deregister_script()
hoặc wp_dequeue_script()
là đủ. Nhưng đôi khi nếu muốn thực hiện một số thay đổi và để lại các phụ thuộc hiện có, các biến và bản địa hóa có vấn đề bởi vì các plugin được tải trước các chủ đề. Vì vậy, hàm enqueue sẽ không hoạt động như bạn mong đợi. Đơn giản wp_dequeue_script() => wp_enqueue_script()
sẽ not work, wp_deregister_script() => wp_register_script
() sẽ hoạt động nhưng dữ liệu được bản địa hóa sẽ bị mất.
Điều này có thể được giải quyết bằng cách làm việc trực tiếp với $wp_scripts
đối tượng toàn cầu có chứa và quản lý tất cả các kịch bản nạp qua wp_enqueue_script()
hoặc đăng ký với wp_register_script()
:
add_action('wp_enqueue_scripts', 'load_theme_scripts');
function load_theme_scripts() {
global $wp_scripts;
$wp_scripts->registered[ 'wc-add-to-cart' ]->src = get_template_directory_uri() . '/woocommerce/js/wc-add-to-cart.js';
}
Bạn có muốn hoàn toàn vô hiệu hóa kịch bản của họ, hoặc ghi đè một hành vi hoặc sự kiện cụ thể? –
Vâng, tôi sẽ hoàn toàn ghi đè lên tệp javascript (add-to-cart-variation.js) vì có khá nhiều thay đổi mà tôi cần phải thực hiện. – Sebastien
Trong tập tin đó, có vẻ như chỉ có hai sự kiện được ràng buộc trên doc đã sẵn sàng. Bạn chỉ có thể unbind chúng trong kịch bản của riêng bạn. line-4 và line-216 https://github.com/woothemes/woocommerce/blob/master/assets/js/frontend/add-to-cart-variation.js. Tôi chưa từng làm việc với plugin đó, nhưng tôi cho rằng bạn cũng có thể chỉnh sửa thủ công tệp đó. –