wp_register_script() và wp_enqueue_script() là hai hàm được sử dụng phổ biến nhất trong wordpress khi phát triển themes hay plugins. Tuy vậy, tôi dám chắc có rất nhiều bạn lập trình viên mới làm quen với hai hàm này sẽ gặp nhiều khó khăn trong việc hiểu và vận dụng chúng trong quá trình làm việc. Và vì thế, qua bài viết này, tôi sẽ cố gắng làm rõ ý nghĩa của chúng để các bạn có thể hiểu và vận dụng một cách đúng đắn. Hãy cố gắng đọc chậm, và đọc kỹ để có thể hiểu rõ.
wp_register_script() dùng để đăng ký một thư viện script.
wp_enqueue_script() dùng để đăng ký và sử dụng một thư viện script.
Bạn có thể không cần sử dụng hàm wp_register_script() mà trực tiếp gọi hàm wp_enqueue_script().
Vậy wp_register_script() có vai trò gì?
Hãy xem ví dụ sau đây:
Giả sử chúng ta có hai file script, tôi đặt tên chúng lần lượt là first.js và second.js. Để làm dấu, trong mỗi file tôi viết một đoạn script hiển thị lời chào trong console:
// first.js
console.log("Hello. I am First JS");
// second.js
console.log("Hello. I am Second JS");
Đầu tiên tôi gọi hàm wp_register_script() cho file first.js.
wp_register_script( 'first', get_template_directory_uri() . '/assets/js/first.js' );
Tôi chắc chắn một điều là không có gì xảy ra, không có lời chào nào xuất hiện khi bạn mở console lên cả.
Vì khi gọi hàm wp_register_script(), hệ thống wordpress chỉ lưu trữ thông tin của cái file js, bao gồm tên, đường dẫn,… vào trong một mảng mà không gọi file first.js trong khi tải theme.
Tiếp theo chúng ta gọi hàm wp_enqueue_script() cho file second.js.
wp_enqueue_script( 'second', get_template_directory_uri() . '/assets/js/second.js');
Một lời chào xuất hiện trong console.
Điều đó có nghĩa là hệ thống wordpress đã đăng ký và thực hiện gọi file second.js khi tải theme.
Tới đây, bạn đã hiểu được sự khác nhau cơ bản giữa hai hàm register và enqueue.
Câu hỏi đặt ra là vậy tại sao còn cần đến register trong khi enqueue đã đáp ứng được cả hai mục tiêu.
Điều này liên quan đến tính tiện dụng và hiệu suất của website khi sử dụng hàm register.
Hàm wp_register_script() cho phép chúng ta đăng ký một file script một lần và dùng khi cần. Trong khi đó hàm wp_enqueue_script() có nhiệm vụ gọi các file js để thực thi.
wp_register_script() có thể có hoặc không có – không bắt buộc, nhưng hàm wp_enqueue_script() thì bắt buộc phải có để gọi và thực thi file js.
Đó là tất cả những gì tôi có thể làm để giúp bạn hiểu được sự khác nhau giữa hai hàm này. Hi vọng qua bài viết, tôi có thể giúp các bạn hiểu và biết các vận dụng hai hàm này trong các dự án thực tếmột cách khoa học, đúng đắn, tối ưu hiệu suất tải trang web của bạn.