Trang chủ » WordPress » Cách sử dụng WordPress Action Hook trong Tùy chỉnh chủ đề

    Cách sử dụng WordPress Action Hook trong Tùy chỉnh chủ đề

    Các chủ đề con của WordPress cung cấp một cách tương đối dễ dàng để tùy chỉnh giao diện của một chủ đề. Nếu các tùy chọn của chủ đề không cung cấp cho bạn các lựa chọn thiết kế đầy đủ, bạn có thể thêm quy tắc mới vào tệp biểu định kiểu mặc định của chủ đề con có tên là style.css. Nhưng điều gì xảy ra khi bạn cũng muốn sửa đổi chức năng của chủ đề? Đó là một trong những trường hợp khi các hành động của WordPress đến giúp bạn.

    WordPress đã trở nên phổ biến một phần vì khả năng tùy biến cao. WordPress Core được tải với các móc khác nhau cho phép các nhà phát triển sửa đổi hoặc nâng cao chức năng mặc định. Hơn nữa, chúng tôi được phép bao gồm móc tùy chỉnh trong các chủ đề và plugin của chúng tôi để giúp các nhà phát triển khác dễ dàng điều chỉnh mã của chúng tôi theo nhu cầu của họ.

    Giới thiệu về móc WordPress

    Móc WordPress hoạt động hơi giống với móc thực tế theo nghĩa là bạn có thể bắt được cá bạn muốn ở đúng vị trí nếu bạn sử dụng đúng cách.

    Bạn có thể loại bỏ một chức năng bị bắt (ví dụ: bạn có thể xóa thanh quản trị WordPress cho người dùng cấp thấp), bạn có thể giữ nguyênnâng cao nó với chức năng của riêng bạn (ví dụ: bạn có thể thêm nhiều menu hoặc khu vực widget vào một chủ đề) hoặc bạn có thể ghi đè lên nó (ví dụ: bạn có thể sửa đổi hành vi của chức năng cốt lõi).

    Có hai loại hook khác nhau trong WordPress: hành độngbộ lọc. Trong bài viết này, chúng tôi sẽ xem xét làm thế nào chúng ta có thể sử dụng các hook hành động trong tùy biến chủ đề.

    Cách WordPress hoạt động

    Sử dụng một ngôn ngữ rất đơn giản, hành động chỉ ra rằng một cái gì đó đã xảy ra trong vòng đời của trang WordPress: một số phần của trang web đã được tải, một số tùy chọn hoặc cài đặt đã được thiết lập, plugin hoặc widget đã được khởi tạo, v.v..

    Bộ lọc khác với hành động trong bản chất của họ. Họ đã quen với truyền dữ liệu qua, và sửa đổi, quản lý hoặc là đánh chặn nó trước khi hiển thị nó ra màn hình hoặc lưu dữ liệu người dùng vào cơ sở dữ liệu.

    Tại mỗi mốc quan trọng của vòng đời trang WordPress đều có một hoạt động hoặc một bộ lọc móc mà chúng ta có thể thêm mã tùy chỉnh của chúng tôi để sửa đổi hành vi mặc định theo nhu cầu của chúng tôi.

    Các hành động và bộ lọc nhất định chạy trong yêu cầu tùy thuộc vào trang nào được yêu cầu bởi tác nhân người dùng: ví dụ: trong một móc yêu cầu bài đăng liên quan đến các bài đăng có sẵn, nhưng móc liên quan đến các phần khác của trang web (ví dụ: khu vực quản trị viên) không.

    Tìm móc hành động

    Tham chiếu hành động của Codex WordPress cung cấp tổng quan chi tiết về các hành động chạy qua các yêu cầu khác nhau. Điều quan trọng là nếu chúng ta muốn hoàn thành một nhiệm vụ, chúng ta cần phải móc vào đúng chỗ, không phải trước hoặc sau nó, nếu không thì hành động sẽ không được hoàn thành.

    Vì vậy, ví dụ nếu chúng ta muốn thêm mã Google Analytics của chúng tôi vào một trang web chúng ta cần phải móc hành động của chúng tôi ngay trước khi chân trang được tải.

    Nếu chúng ta nói về tùy chỉnh chủ đề, móc hành động có thể đến từ hai nơi khác nhau: từ Lõi WordPresschính chủ đề. Có những chủ đề hoàn toàn không có móc nối, nhưng những chủ đề khác cung cấp cho các nhà phát triển một số hoặc nhiều - đó luôn là lựa chọn của tác giả chủ đề. Chủ đề Twenty F Mười mặc định chỉ có một móc hành động để tùy chỉnh chân trang dưới tên 'hai mươi lăm_credits'.

    Nếu bạn thích duyệt mã nguồn, bạn cũng có thể tìm thấy các móc hành động một cách dễ dàng. Các hook hành động được thêm vào mã bằng hàm do_action () WordPress.

    Nếu bạn chạy một tìm kiếm nhanh cho biểu thức 'do_action' trong trình soạn thảo mã nâng cao hơn - như tôi đã làm trong Eclipse bên dưới - bạn có thể thấy một danh sách về các điểm mà bạn có thể móc chức năng tùy chỉnh của mình vào lõi. Tôi đã tìm kiếm trong / wp-gồm / thư mục, nhưng bạn cũng có thể chạy tìm kiếm / wp-admin / thư mục chứa các móc hành động liên quan đến bảng điều khiển WordPress (khu vực quản trị).

    Điều tốt là tên của các hook hành động thường khá tự giải thích, nhưng có thường là một bình luận tốt đẹp bên trong mã điều đó có thể cung cấp cho bạn thêm kiến ​​thức cho dù hook hành động đã cho có tốt cho lý do bạn muốn sử dụng nó cho.

    Ví dụ: nhận xét mã trước móc hành động 'widget_init' nói rằng nó “cháy sau khi tất cả các widget WordPress mặc định đã được đăng ký”. Nếu bạn xem qua mã trước hook hook này, bạn có thể tìm thấy tất cả các khởi tạo mặc định của các widget WP trước nó - vì vậy bạn có thể chắc chắn rằng bình luận không nói dối và nếu bạn muốn đăng ký widget tùy chỉnh của riêng mình, đây sẽ là điểm đúng.

    Trong nhiều trường hợp, mã nguồn cung cấp cho chúng tôi nhiều thông tin hơn Codex, vì vậy có thể là một ý tưởng tốt để tìm hiểu cách nhanh chóng điều hướng trong đó.

    Thêm hành động của riêng bạn

    Khi bạn muốn thêm hành động của riêng mình, bạn cần phải tạo một chức năng tùy chỉnhliên kết chức năng này với một hook hành động cụ thể bằng cách sử dụng hàm WordPress add_action (). Các hành động tùy chỉnh được thêm bằng hàm add_action () thường là kích hoạt tại chỗ khi lõi gọi hàm do_action () thích hợp.

    Hãy xem một ví dụ đơn giản.

    Làm thế nào để tìm hook hành động bạn cần

    Giả sử bạn muốn thêm favicon tùy chỉnh vào trang web của mình. Trước tiên, bạn cần tìm móc hành động phù hợp mà bạn có thể liên kết chức năng của riêng mình với.

    Nghĩ thử xem. Nếu bạn muốn thêm một favicon vào một trang HTML đơn giản, bạn sẽ đặt nó ở đâu? Tất nhiên, bạn cần đặt nó bên trong phần của tệp HTML có đánh dấu sau:

      

    Vì vậy, hook hành động bạn cần phải là liên quan đến việc tải phần.

    (1) Mở Tham chiếu hành động và xem những gì nó cung cấp. Chúng tôi may mắn, như thể chúng tôi duyệt qua các hành động, chúng tôi chỉ có thể tìm thấy một, wp_head, dựa trên tên của nó có khả năng liên quan đến việc tải phần.

    (2) Để chắc chắn, hãy kiểm tra tài liệu trong WordPress Codex. Codex khuyên rằng “bạn sử dụng hook này bằng cách cho chức năng echo của bạn xuất ra trình duyệt”, vì vậy ngay bây giờ nó có vẻ là hoàn hảo cho chúng ta. Nhưng hãy kiểm tra nó trong mã nguồn.

    (3) Vì hook này không liên quan đến khu vực quản trị, chúng tôi sẽ cần chạy tìm kiếm của chúng tôi trong / wp-gồm / thư mục. Nếu chúng tôi tìm kiếm từ 'wp-head', chúng tôi sẽ nhận được nhiều kết quả vì hành động cụ thể này được WP Core sử dụng nhiều lần.

    Chúng ta cần tìm vị trí mà nó được xác định, vì vậy hãy tìm biểu thức do_action ('wp_head'. Lưu ý rằng chúng tôi đã không hoàn thành dấu ngoặc đơn, vì chúng tôi chưa thể chắc chắn liệu hành động này có tham số hay không.

    Eclipse chỉ trả về một kết quả có thể tìm thấy bên trong /wp-includes/general-template.php tập tin. Nhận xét trước định nghĩa hook hành động nói rằng nó “in tập lệnh hoặc dữ liệu trong thẻ head ở giao diện người dùng”, vì vậy bây giờ chúng ta có thể chết chắc chắn rằng wp_head là cái móc hành động chúng ta cần.

    Kiểm tra các thông số

    Khi bạn thêm hành động của riêng mình, bạn cũng cần chắc chắn liệu hook bạn muốn sử dụng có tham số hay không. Bạn có thể dễ dàng tìm ra điều này bằng cách xem hàm do_action ().

    Cú pháp của hàm do_action () là như sau:

     do_action ('name_of_action' [, $ tham số1, $ tham số2, '] 

    Chỉ cần tên của hành động là cần thiết, các tham số là tùy chọn. Nếu bạn tìm thấy các đối số trong lệnh gọi có liên quan của hàm do_action (), bạn cần phải bao gồm chúng trong khai báo hàm tùy chỉnh bạn tạo.

    Nếu bạn không tìm thấy bất kỳ, thì chức năng tùy chỉnh của bạn phải hoạt động mà không có đối số. Trong định nghĩa do_action () của hook hành động wp_head, không có tham số nào.

    Hãy so sánh nó với một hook hành động có tham số. Móc hành động có tên 'wp_register_sidebar_widget' nhận một tham số mà bạn luôn phải truyền cho hàm tùy chỉnh mà bạn liên kết với hook.

    Chúng ta hãy xem sự khác biệt trong cú pháp do_action () của hai trường hợp:

     do_action ('wp_head'); do_action ('wp_register_sidebar_widget', $ widget);

    Trong trường hợp đầu tiên không có tham số, vì vậy hàm tùy chỉnh sẽ sử dụng cú pháp sau:

     chức năng my_feft_without_parameter () ' 

    Trong trường hợp thứ hai, có một tham số mà bạn luôn phải chuyển dưới dạng đối số vào khai báo hàm tùy chỉnh của mình:

     chức năng my_feft_with_parameter ($ widget) Khác 

    Làm thế nào để kết nối chức năng tùy chỉnh của bạn trong

    Bây giờ chúng tôi biết mọi thứ chúng tôi cần. Hãy tạo chức năng tùy chỉnh của chúng tôi sẽ hiển thị hình đại diện trên trang web của chúng tôi.

    Đầu tiên, tạo một hàm mới mà không có bất kỳ đối số nào, sau đó liên kết nó với hook hành động wp_head với sự trợ giúp của hàm add_action () WordPress.

     chức năng custom_add_favicon () echo '';  add_action ('wp_head', 'custom_add_favicon');

    Bạn cần phải vượt qua tên của móc hành động đến hàm add_action () như là một đối số đầu tiên, sau đó bạn cần phải thêm tên của chức năng tùy chỉnh của bạn.

    Đây là hai tham số bắt buộc của add_action (). Nó cũng có hai tham số tùy chọn, sự ưu tiênlập luận được chấp nhận. Hãy xem cách sử dụng chúng.

    Xác định ưu tiên

    Nó xảy ra trong nhiều trường hợp có nhiều hơn một hành động bị ràng buộc vào cùng một hook. Vì thế cái nào sẽ được thực hiện trước? Đây là nơi chúng ta có thể sử dụng $ tham số tùy chọn ưu tiên của hàm add_action ().

    Chúng tôi thêm mức độ ưu tiên dưới dạng số nguyên dương, giá trị mặc định là 10. Nếu chúng ta muốn một hành động được thực hiện sớm, chúng ta sẽ cho nó một giá trị thấp hơn, nếu chúng ta muốn nó được thực hiện sau đó, chúng ta sẽ cho nó một giá trị cao hơn.

    Vì vậy, nếu chúng tôi nghĩ rằng favicon cần phải có mặt sớm, chúng tôi có thể tăng cường cuộc gọi add_action () trước đó theo cách sau:

     add_action ('wp_head', 'custom_add_favicon', 5); 

    Xin lưu ý rằng các ưu tiên luôn phải có đặt tương đối cho các chức năng tùy chỉnh khác sử dụng cùng một hook hành động.

    Thêm số lượng đối số được chấp nhận

    Bạn được yêu cầu thêm số lượng đối số được chấp nhận trong trường hợp bạn sử dụng hook hành động có tham số. Hãy xem ví dụ chúng ta đã sử dụng trước đây.

    Móc hành động 'wp_register_sidebar_widget' nhận một tham số, vì vậy khi chúng ta liên kết chức năng tùy chỉnh của mình với hook này, chúng ta cũng cần đưa nó làm đối số khi chúng ta gọi hàm add_action ().

    Mã của chúng tôi trong trường hợp này sẽ trông như thế này:

     chức năng my_sidebar_widget_function ($ widget) // Mã của bạn add_action ('wp_register_sidebar_widget', 'my_sidebar_widget_feft', 10, 1); 

    Lưu ý rằng chúng ta phải cũng thêm ưu tiên (chúng tôi đã chọn 10 mặc định ở đây) để đảm bảo rằng WordPress biết ý nghĩa của từng tham số. Nếu chúng tôi bỏ qua mức độ ưu tiên, WordPress có thể cho rằng 1 là mức độ ưu tiên Điều này không đúng, vì nó chỉ ra số lượng các đối số được chấp nhận.

    Phần kết luận

    Bạn có thể thực hiện nhiều thử nghiệm với các móc hành động trong tùy chỉnh chủ đề. Ví dụ: bạn có thể thêm tập lệnh tùy chỉnh (JS) và kiểu (CSS) bằng móc hành động wp_enqueue_scripts hoặc mã Google Analytics của bạn bằng móc hành động wp_footer.

    Bạn không chỉ có thể thêm hành động của riêng bạn, nhưng bạn cũng có thể loại bỏ hoàn toàn chức năng từ lõi WordPress với việc sử dụng hàm remove_action () sử dụng logic tương tự như add_action ().

    Nếu bạn là một tác giả chủ đề và bạn muốn tạo một chủ đề mở rộng, nó có thể là một ý tưởng tốt để thêm móc hành động tùy chỉnh của riêng bạn vào các tệp mẫu thích hợp với hàm do_action ().

    Nếu bạn muốn làm như vậy, suy nghĩ cẩn thận về các tham số mà các nhà phát triển khác ai sẽ sử dụng chủ đề của bạn sẽ phải vượt qua như là đối số khi họ muốn nối vào các chức năng tùy chỉnh của họ.

    Trong khi thiết kế vị trí của các móc hành động tùy chỉnh của chủ đề, đừng quên rằng nó không có ý nghĩa gì khi đưa các móc chủ đề tùy chỉnh vào cùng một vị trí nơi WordPress Core có các móc riêng của nó.