Biết cách thích hợp để bao gồm các tệp JavaScript và CSS trong các chủ đề và plugin WordPress của bạn là rất quan trọng đối với các nhà thiết kế và nhà phát triển. Nếu không tuân thủ các phương pháp hay nhất, bạn sẽ gặp rủi ro xung đột với các chủ đề và plugin khác, đồng thời có khả năng tạo ra sự cố mà lẽ ra có thể dễ dàng tránh được. Bài viết này nhằm mục đích tham khảo để chơi đẹp với những người khác Show
Trước khi chúng tôi bắt đầu, bạn có thể duyệt qua các Chủ đề WordPress và Plugin WordPress của chúng tôi, nếu bạn cần bắt đầu dự án tiếp theo của mình một cách chuyên nghiệp. Thực tiễn tốt nhất làm cho mọi người hạnh phúcNếu bạn đã từng phát triển một chủ đề hoặc plugin cho WordPress hoặc làm việc với một chủ đề hoặc plugin do người khác tạo, thì có lẽ bạn đã bắt gặp một số phương pháp khác nhau để bao gồm JavaScript và CSS. Mặc dù có một số phương pháp có thể hoạt động trong một nhóm trường hợp cụ thể, nhưng có một phương pháp chính được đề xuất trong WordPress Codex. Cách ưu tiên này sẽ đảm bảo chủ đề hoặc plugin của bạn hoạt động trong mọi trường hợp, giả sử những người khác cũng viết mã đúng cách Cũng có một số hiểu lầm về chính xác những gì Codex nói về điều này, tôi sẽ giúp làm rõ Có cái gì trong hộp vậy?Khi bạn tải xuống WordPress, đã bao gồm một số thư viện JavaScript phổ biến mà bạn có thể sử dụng để phát triển JavaScript của mình. Bạn có thể tìm thấy danh sách các thư viện được bao gồm trong bài viết WordPress Codex wp_register_script( $handle, $src, $deps, $ver, $in_footer );88 Tất cả các thư viện đó đều được bao gồm, nhưng theo mặc định, WordPress chỉ tải những thư viện cần và chỉ khi cần chúng trong quản trị viên. Nếu bạn viết JavaScript sử dụng một trong những thư viện này, bạn cần thông báo cho WordPress rằng tập lệnh của bạn cần tải thư viện trước Nói với WordPress về tập lệnh của bạn và những gì nó cầnMột số điều cần suy nghĩ khi bạn viết mã JavaScript cho WordPress là
Trả lời những câu hỏi này giúp bạn biết mình cần làm gì để đăng ký và tải tập lệnh của mình. Điều này được thực hiện bằng cách sử dụng chức năng WordPress có tên là wp_register_script( $handle, $src, $deps, $ver, $in_footer );89 và đây là cách sử dụng chức năng này theo WordPress Codex 1 wp_register_script( $handle, $src, $deps, $ver, $in_footer ); Vậy những biến này là gì và chúng ta có cần chúng mọi lúc không?
"Xóa bộ nhớ đệm" là gì?Trình duyệt ghi nhớ tập lệnh và biểu định kiểu nào họ đã tải xuống cho một trang web cụ thể dựa trên URL của tập lệnh và biểu định kiểu. Nếu bạn thay đổi URL, thậm chí chỉ bằng cách thêm một chuỗi truy vấn, trình duyệt sẽ cho rằng đó là một tệp mới và tải xuống Ok, vậy hãy thử một số ví dụĐây là ví dụ cơ bản nhất để tải tập lệnh tùy chỉnh 1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );7_______18 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 10 11 12 13 wp_register_script( $handle, $src, $deps, $ver, $in_footer );0 wp_register_script( $handle, $src, $deps, $ver, $in_footer );1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );2 wp_register_script( $handle, $src, $deps, $ver, $in_footer );3 wp_register_script( $handle, $src, $deps, $ver, $in_footer );4 wp_register_script( $handle, $src, $deps, $ver, $in_footer );5 wp_register_script( $handle, $src, $deps, $ver, $in_footer );6 wp_register_script( $handle, $src, $deps, $ver, $in_footer );7 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 10 11 12 13 14 Đầu tiên, chúng tôi đăng ký tập lệnh, để WordPress biết chúng tôi đang nói về điều gì. Cách tìm đường dẫn cho tệp JavaScript của chúng tôi là khác nhau cho dù chúng tôi đang mã hóa plugin hay chủ đề, vì vậy tôi đã bao gồm các ví dụ về cả hai bên trên. Sau đó, chúng tôi xếp nó vào hàng đợi để được thêm vào HTML cho trang khi nó được tạo, theo mặc định trong 102 trong đó wp_register_script( $handle, $src, $deps, $ver, $in_footer );99 nằm trong chủ đề Đầu ra chúng tôi nhận được từ ví dụ cơ bản đó là 1 16 Bây giờ nếu tập lệnh của bạn dựa trên một trong các thư viện có trong WordPress, như jQuery, thì bạn có thể thực hiện một thay đổi rất đơn giản đối với mã 1 18 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 10 11 12 wp_register_script( $handle, $src, $deps, $ver, $in_footer );74 wp_register_script( $handle, $src, $deps, $ver, $in_footer );0 wp_register_script( $handle, $src, $deps, $ver, $in_footer );1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );2 wp_register_script( $handle, $src, $deps, $ver, $in_footer );3 wp_register_script( $handle, $src, $deps, $ver, $in_footer );4 wp_register_script( $handle, $src, $deps, $ver, $in_footer );80 wp_register_script( $handle, $src, $deps, $ver, $in_footer );6 wp_register_script( $handle, $src, $deps, $ver, $in_footer );7 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 10 11 12 13 wp_register_script( $handle, $src, $deps, $ver, $in_footer );89 Ghi chú. Theo mặc định, jQuery được tải với noConflict để tránh xung đột với các thư viện khác (chẳng hạn như Prototype). Xem phần không có Xung đột của Codex nếu bạn không biết cách giải quyết vấn đề đó Xem những gì tôi đã làm ở đó? . Nó sử dụng một mảng ở đây, vì tập lệnh của bạn có thể có nhiều phần phụ thuộc. Nếu tập lệnh của bạn sử dụng giao diện người dùng jQuery và jQuery, thì bạn nên thêm giao diện người dùng jQuery vào mảng phụ thuộc của mình, chẳng hạn như 104 Vì vậy, bây giờ đầu ra đã thay đổi và chúng ta có thể thấy rằng jQuery cũng đã được thêm vào 102 của trang 1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );91 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );93 Hãy thử một ví dụ với tất cả chuông và còi 1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );95 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 10 11 12 101 wp_register_script( $handle, $src, $deps, $ver, $in_footer );0 wp_register_script( $handle, $src, $deps, $ver, $in_footer );1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );2 wp_register_script( $handle, $src, $deps, $ver, $in_footer );3 wp_register_script( $handle, $src, $deps, $ver, $in_footer );4 107 wp_register_script( $handle, $src, $deps, $ver, $in_footer );6 wp_register_script( $handle, $src, $deps, $ver, $in_footer );7 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 10 11 12 13 116 Ok, vì vậy tôi hiện đã thêm một phiên bản và chỉ định rằng tập lệnh này cần được tải ở chân trang. Đối với số phiên bản, tôi đã chọn sử dụng ngày hôm nay vì nó dễ theo dõi, nhưng bạn có thể sử dụng bất kỳ số phiên bản nào bạn muốn. Đầu ra cho cái này cũng hơi khác một chút, jQuery được xuất trong 102 và tập lệnh của chúng tôi cùng với Giao diện người dùng jQuery được xuất ngay trước 107, như thế này 1 118 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 120 10 122 12 120 wp_register_script( $handle, $src, $deps, $ver, $in_footer );0 126 wp_register_script( $handle, $src, $deps, $ver, $in_footer );2 128 wp_register_script( $handle, $src, $deps, $ver, $in_footer );4 120 wp_register_script( $handle, $src, $deps, $ver, $in_footer );6 132 wp_register_script( $handle, $src, $deps, $ver, $in_footer );7 134 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 136 Làm rõ các ưu tiên của bạnMột số người có thể không muốn sử dụng các phương pháp xếp hàng thích hợp vì họ cảm thấy họ có ít quyền kiểm soát hơn đối với thứ tự tải tập lệnh. Ví dụ: trong một chủ đề sử dụng Modernizr, tác giả chủ đề có thể muốn đảm bảo rằng Modernizr được tải sớm Một điều tôi chưa đề cập trước đó là chi tiết hơn về cách hoạt động của hàm 108, vì đây là nơi chúng ta có thể thực hiện một chút ảnh hưởng đối với thứ tự của mọi thứ. Đây là cách sử dụng chức năng theo trang WordPress Codex 1 138 Lưu ý rằng thông thường và cho đến bây giờ trong bài viết này, chỉ các tham số 109 và 110 được sử dụng. Tham số 111 mặc định là 10 và tham số 112 mặc định là 1. Nếu chúng tôi muốn tập lệnh hoặc kiểu của mình được đưa vào hàng đợi sớm hơn, chúng tôi chỉ cần giảm giá trị cho 111 từ giá trị mặc định. Ví dụ 1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );00 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 10 11 12 13 wp_register_script( $handle, $src, $deps, $ver, $in_footer );0 wp_register_script( $handle, $src, $deps, $ver, $in_footer );1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );2 wp_register_script( $handle, $src, $deps, $ver, $in_footer );3 wp_register_script( $handle, $src, $deps, $ver, $in_footer );4 wp_register_script( $handle, $src, $deps, $ver, $in_footer );5 wp_register_script( $handle, $src, $deps, $ver, $in_footer );6 wp_register_script( $handle, $src, $deps, $ver, $in_footer );7 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 10 11 12 13 wp_register_script( $handle, $src, $deps, $ver, $in_footer );21 Đầu ra sẽ giống như chúng ta đã thấy trước đây, nhưng nó sẽ xuất hiện sớm hơn trong tài liệu HTML Ghi đè thư viện mặc định và sử dụng mạng phân phối nội dungCó thể đôi khi bạn muốn sử dụng một phiên bản khác của thư viện có trong WordPress. Có lẽ bạn muốn sử dụng phiên bản tiên tiến hoặc bạn không muốn đợi bản phát hành tiếp theo của WordPress trước khi sử dụng phiên bản ổn định mới nhất của jQuery. Một lý do khác có thể là bạn muốn tận dụng phiên bản thư viện CDN của Google Điều quan trọng cần lưu ý là điều này chỉ nên được thực hiện trên các plugin hoặc chủ đề được sử dụng trên các trang web mà cá nhân bạn sẽ duy trì. Bất kỳ plugin hoặc chủ đề nào bạn phát hành cho mục đích sử dụng chung nên sử dụng các thư viện đi kèm với WordPress "Tại sao?. ", tôi nghe bạn hỏi. Vì lý do đơn giản là bạn không kiểm soát các trang web đó. Bạn không biết những plugin và chủ đề nào khác có thể được sử dụng ở đó và bạn không biết tần suất họ sẽ cập nhật plugin hoặc chủ đề của bạn. Sử dụng các thư viện đóng gói với WordPress là lựa chọn an toàn nhất Phải nói rằng, nếu bạn muốn làm điều này trên một trang web mà bạn kiểm soát, thì đây là cách nó được thực hiện 1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );23 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 10 wp_register_script( $handle, $src, $deps, $ver, $in_footer );27 12 wp_register_script( $handle, $src, $deps, $ver, $in_footer );29 wp_register_script( $handle, $src, $deps, $ver, $in_footer );0 wp_register_script( $handle, $src, $deps, $ver, $in_footer );31 wp_register_script( $handle, $src, $deps, $ver, $in_footer );2 wp_register_script( $handle, $src, $deps, $ver, $in_footer );33 wp_register_script( $handle, $src, $deps, $ver, $in_footer );4 wp_register_script( $handle, $src, $deps, $ver, $in_footer );35 wp_register_script( $handle, $src, $deps, $ver, $in_footer );6 wp_register_script( $handle, $src, $deps, $ver, $in_footer );31 wp_register_script( $handle, $src, $deps, $ver, $in_footer );7 11 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 wp_register_script( $handle, $src, $deps, $ver, $in_footer );74 11 wp_register_script( $handle, $src, $deps, $ver, $in_footer );1 13 wp_register_script( $handle, $src, $deps, $ver, $in_footer );3 wp_register_script( $handle, $src, $deps, $ver, $in_footer );46 wp_register_script( $handle, $src, $deps, $ver, $in_footer );80 wp_register_script( $handle, $src, $deps, $ver, $in_footer );48 wp_register_script( $handle, $src, $deps, $ver, $in_footer );49 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );51 10 wp_register_script( $handle, $src, $deps, $ver, $in_footer );53 12 wp_register_script( $handle, $src, $deps, $ver, $in_footer );55 wp_register_script( $handle, $src, $deps, $ver, $in_footer );56 Vì vậy, trước hết, tôi hủy đăng ký phiên bản đi kèm của thư viện, nếu không có thể xảy ra xung đột giữa các phiên bản khác nhau. Sau đó đăng ký phiên bản thay thế, sử dụng cùng một tay cầm và tôi đã chọn chỉ định null làm phiên bản (nó đã có trong URL. ) và được chỉ định không có trong phần chân trang. Phần còn lại của mã của chúng tôi giống nhau, bởi vì chúng tôi phụ thuộc vào bất kỳ tập lệnh nào sử dụng trình xử lý 'jquery'. Đầu ra chúng tôi nhận được bây giờ trông giống như 1____058 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );93 Ghi chú. Một trong những lý do đây là một ý tưởng tồi khi thực hiện plugin hoặc chủ đề để phát hành công khai, đó là tất cả các plugin và chủ đề khác được sử dụng trên trang web này giờ đây sẽ phải sử dụng phiên bản jQuery này. Ngoài ra, phiên bản jQuery mới đăng ký không có bộ xung đột, vì vậy nếu bất kỳ plugin hoặc tập lệnh chủ đề nào khác sử dụng Prototype chẳng hạn, điều này sẽ phá vỡ mọi thứ Đừng tham lamCho đến nay, chúng tôi chưa đề cập bất cứ điều gì về cách thực hiện tất cả điều này trong quản trị viên, chỉ trên giao diện người dùng. Sự khác biệt chính là sử dụng hành động nào. Thay vì 114 mà chúng tôi sử dụng cho giao diện người dùng, hành động dành cho quản trị viên là 115 Điều quan trọng cần làm đối với cả giao diện người dùng và quản trị viên là chọn lọc những trang bạn tải tập lệnh của mình trên đó. Nếu plugin hoặc chủ đề của bạn có tập lệnh chỉ thực hiện điều gì đó trên một trang giao diện người dùng hoặc trang quản trị, chẳng hạn như trang tùy chọn của chủ đề hoặc có thể là một trang có tiện ích con cụ thể, thì bạn chỉ cần tải tập lệnh của mình trên trang đó. Không có điểm nào làm tắc nghẽn mọi thứ và tải tập lệnh trên các trang mà chúng không được sử dụng Có một ví dụ tuyệt vời trong WordPress Codex về cách chỉ tải tập lệnh trên các trang plugin. Bởi vì các plugin và chủ đề có thể khác nhau rất nhiều về cách chúng được viết, nên tôi sẽ không đi vào chi tiết cụ thể ở đây về cách kén chọn trang nào bạn tải tập lệnh, nhưng điều quan trọng là phải đề cập để bạn biết về nó khi nào. Đó là Scripts, Now StylesQuy trình cho các kiểu gần giống hệt như quy trình cho các tập lệnh. Nó được thực hiện bằng cách sử dụng một chức năng WordPress có tên là 116 và đây là cách sử dụng nó theo WordPress Codex 1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );62 Lưu ý rằng sự khác biệt duy nhất giữa wp_register_script( $handle, $src, $deps, $ver, $in_footer );89 và 116 là thay vì tham số wp_register_script( $handle, $src, $deps, $ver, $in_footer );95, chúng ta có tham số 120. Tham số này có thể được đặt thành bất kỳ thông số nào sau đây. 121, 122, 123 và 124 hoặc bất kỳ loại phương tiện nào được W3C công nhận Vì vậy, một ví dụ về cách bạn có thể liệt kê một phong cách sẽ là 1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );64 wp_register_script( $handle, $src, $deps, $ver, $in_footer );8 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 10 wp_register_script( $handle, $src, $deps, $ver, $in_footer );68 12 wp_register_script( $handle, $src, $deps, $ver, $in_footer );70 wp_register_script( $handle, $src, $deps, $ver, $in_footer );0 wp_register_script( $handle, $src, $deps, $ver, $in_footer );1 wp_register_script( $handle, $src, $deps, $ver, $in_footer );2 wp_register_script( $handle, $src, $deps, $ver, $in_footer );74 wp_register_script( $handle, $src, $deps, $ver, $in_footer );4 wp_register_script( $handle, $src, $deps, $ver, $in_footer );76 wp_register_script( $handle, $src, $deps, $ver, $in_footer );6 wp_register_script( $handle, $src, $deps, $ver, $in_footer );7 wp_register_script( $handle, $src, $deps, $ver, $in_footer );79 wp_register_script( $handle, $src, $deps, $ver, $in_footer );9 wp_register_script( $handle, $src, $deps, $ver, $in_footer );81 11 12 13 wp_register_script( $handle, $src, $deps, $ver, $in_footer );85 Đây là một ví dụ khá toàn diện, sử dụng hầu hết các tham số và đầu ra mà nó tạo ra trông giống như 1____087 Vì vậy, tại sao không phải tất cả mọi người đã làm mọi thứ theo cách này?Một câu hỏi hay, và câu hỏi khác mà tôi đoán bạn có thể hỏi là, "Điều gì khiến bạn nghĩ rằng đây là cách 'đúng' chứ không chỉ là sở thích của bạn?". Về cơ bản, câu trả lời là đây là phương pháp được WordPress đề xuất. Nó đảm bảo rằng bất kỳ sự kết hợp nào giữa các plugin và chủ đề đều có thể hoạt động cùng nhau một cách vui vẻ và không bị nhân đôi Tôi đã thấy một vài chủ đề và khuôn khổ xung quanh nơi sử dụng các thẻ 125 và 126 trong các tệp 127 và thậm chí là 128 của chúng để tải các tập lệnh và kiểu cho chính chủ đề đó. Thực sự không có lý do gì để làm mọi thứ theo cách này. Như tôi đã trình bày ở trên, bạn hoàn toàn có thể ưu tiên các tập lệnh và kiểu và chỉ định xem chúng có tải ở đầu trang hay chân trang một cách thoải mái và an toàn trên 129 của bạn không. Lợi ích là chủ đề/khung của bạn sẽ hoạt động với nhiều loại plugin/chủ đề con khác Một ví dụ là tải jQuery bằng cách sử dụng các thẻ 125, thẻ này có vẻ hoạt động tốt, nhưng điều này thực sự có thể khiến jQuery được tải hai lần. Tải jQuery theo cách này sẽ không ngăn WordPress tải phiên bản jQuery của nó cho các plugin khác, vì phiên bản của WordPress ở chế độ không có Xung đột theo mặc định và một plugin có thể chỉ định nó là phụ thuộc. Vì vậy, bây giờ bạn sẽ có jQuery hoạt động cho cả chế độ không có Xung đột và 131, đồng thời cũng có thể phá vỡ bất kỳ plugin nào sử dụng thư viện Nguyên mẫu Phần kết luậnWordPress là một hệ thống tuyệt vời và nó đã được phát triển với rất nhiều suy nghĩ. Nếu có sẵn một cơ chế để làm một việc gì đó, bạn nên sử dụng cơ chế đó. Khi phát triển các plugin và chủ đề của bạn, hãy cố gắng nhớ viết mã cẩn thận và chơi tốt với những người khác Bạn nghĩ gì về việc sử dụng wp_register_script( $handle, $src, $deps, $ver, $in_footer );88 và các chức năng và hành động liên quan của nó? Nếu bạn cần một giải pháp làm sẵn, bạn có thể duyệt qua các Chủ đề Wordpress và Plugin Wordpress của chúng tôi trên Envato Market. |