Có vẻ như đối với bạn là một số plugin WordPress may mắn? WooCommerce, Tải xuống Digit Dễ dàng, Các hình thức trọng lực : mỗi plugin này được cung cấp bởi toàn bộ công ty, với hàng chục tiện ích mở rộng của bên thứ ba và ngày càng có nhiều tính năng do họ bổ sung làm tăng thêm tiềm năng của plugin. Trong thời gian này, hầu hết các plugin khác không tiến triển được.

Làm thế nào một plugin duy nhất có thể trở thành nền tảng của một hệ sinh thái công nghệ đang phát triển mạnh? Có rất nhiều câu trả lời: hãy là người đầu tiên tiếp thị, tạo ra một sản phẩm tuyệt vời, có sự nhạy bén trong tiếp thị và mọi thứ ở giữa. Nhưng hôm nay chúng ta sẽ tập trung vào một phần quan trọng của câu trả lời kỹ thuật đó là: khả năng mở rộng, thông qua hệ thống móc WordPress.

Hôm nay chúng ta sẽ sử dụng một ví dụ về Plugin WordPress để bao gồm hai hàm chính cung cấp trạng thái khả năng mở rộng cho một plugin, đó là: apply_filters () và do_action ().

Tiện ích mở rộng: tiện ích bổ sung

Do đó, rõ ràng là khi chúng ta nói về "tiện ích mở rộng", chúng ta đang đề cập đến các plugin được tạo cho những người khác. Hãy lấy một ví dụ: " Sọc cho WooCommerce '.

Tiện ích mở rộng này không có tác dụng gì nếu bạn chưa có WooCommerce. Nếu bạn cài đặt WooCommerce, sau đó mua và cài đặt “ sọc cho WooCommerce Là một plugin riêng biệt và nó sẽ mở rộng chức năng của WooC Commerce để bạn có thể bắt đầu chấp nhận thanh toán qua cổng thanh toán Stripe.

Vậy là bạn đã có một plugin cải thiện một plugin khác theo một cách cụ thể. Đó là một phần mở rộng. Đây là những trạng từ từ hệ sinh thái WordPress.

Các hàm: apply_filters () và do_action () hoạt động như thế nào?

Câu hỏi tiếp theo: làm thế nào để WooCommerce thấy được chức năng mở rộng của nó? Rốt cuộc, thật dễ dàng để tưởng tượng việc viết một plugin Thương mại điện tử “ chỉ hoạt động với một số cổng thanh toán ". Sau đó, nếu bạn thực sự muốn Stripe, bạn sẽ phải sửa đổi hoàn toàn WooC Commerce và cuối cùng có thể tạo ra công cụ của riêng bạn có tên StripeC Commerce, trở thành đối thủ cạnh tranh của WooC Commerce hoặc đơn giản là sống trên trang web của một trong những khách hàng của bạn có đủ khả năng thanh toán hỗ trợ cá nhân.

Thật là một mớ hỗn độn để suy ngẫm, nhưng may mắn thay, WooC Commerce đang làm điều gì đó tốt hơn rất nhiều. Nó sử dụng hai hàm: application_filters () và do_action (). Hai chức năng này cho phép bạn tạo dấu ngoặc trên WordPress và đây là một phần cơ bản của hệ thống Móc WordPress nói chung.

application_filters () và do_action () Một sự khác biệt khá đơn giản:

  • application_filters () cho phép bạn kết nối các bộ lọc với các chức năng.
  • do_action () cho phép bạn kết nối các hành động với các hàm.

Hãy xem ví dụ để xem chúng hoạt động ra sao.

Ví dụ về việc sử dụng móc WooPress.

Đối với ví dụ của chúng tôi, chúng tôi sẽ sử dụng plugin “Trích dẫn trong ngày”, cùng với tiện ích mở rộng sửa đổi plugin này theo một cách cụ thể. Để theo dõi và xem mã đầy đủ, hãy tải xuống các plugin dưới dạng tệp ZIP https://wpshout.com/media/2016/10/plugins.zip.

Plugin gốc

Plugin này sử dụng API được hiển thị bởi thư viện báo giá bên ngoài và lưu trữ báo giá kết quả dưới dạng dữ liệu tạm thời của WordPress làm mới 24 giờ một lần. Hãy quay lại bài viết này bất cứ lúc nào và bạn sẽ thấy một trích dẫn ngẫu nhiên trong ngày này về chủ đề "cuộc sống", nên đủ rộng.

phần mở rộng plugin

Như chúng ta biết, vấn đề với hầu hết các trích dẫn là chúng không được nói bởi "Carl Sagan". Tiện ích mở rộng của chúng tôi khắc phục sự cố này, sử dụng một số công cụ:

  • Một tiêu đề lớn hiển thị ngày hôm nay và trích dẫn là của Carl Sagan,
  • Một số từ thay thế cụ thể để biến một trích dẫn thành những gì Carl Sagan có thể đã nói
  • Các tác giả của các trích dẫn ban đầu được thay đổi và các trích dẫn hiện được gán chính xác cho Carl Sagan.

Đây là plugin và tiện ích mở rộng, đang hoạt động:

trích dẫn trong hành động

Lê mã

Để điều này xảy ra, hai bước là cần thiết:

Plugin gốc định nghĩa hook - hooks hành động và hooks lọc - cho phép mã bên ngoài sửa đổi hoặc thêm mã của chính nó tại các điểm chính. Plugin sử dụng apply_filters () và do_action () để đạt được điều này.

Tiện ích mở rộng xác định các hàm hook trên action và các bộ lọc - những chức năng này sửa đổi plugin gốc theo cách cần thiết.

Mã khóa trong plugin gốc

Phần quan trọng nhất của mã đối với chúng tôi là những gì chúng tôi làm sau khi lấy dữ liệu từ API. Dữ liệu này có sẵn dưới dạng một mảng với hai phần tử: text: văn bản của trích dẫn; và tác giả: người nói câu trích dẫn. Do đó, mã của chúng tôi sẽ trông như thế này:

add_shortcode ('Extensible_plugin_demo', 'bpc_output_extensible_plugin'); function bpc_output_extensible_plugin () {ob_start (); // Móc trước khi hiển thị! do_action ('bpc_before_get_qod_text'); $ qod_data = bpc_get_qod_data (); if (is_array ($ qod_data)) {echo ' '; $ qod_text = $ qod_data ['text']; $ qod_author = $ qod_data ['tác giả']; // Lọc nội dung! $ qod_text = apply_filters ('bpc_qod_text', $ qod_text); $ qod_author = apply_filters ('bpc_qod_author', $ qod_author); echo $ qod_text; echo ' '; echo $ qod_author; echo ' '; } // Hành động móc sau phần còn lại của đầu ra! do_action ('bpc_ after_get_qod_text'); trả về ob_get_clean (); }

Mã khóa trong phần mở rộng

Plugin không bao gồm bất kỳ điều gì khác ngoài các hành động và bộ lọc để sửa đổi plugin gốc. Đây là mã cho tiện ích mở rộng:

add_filter( 'bpc_qod_text', 'bpc_filter_qod_text' );
// Filter: remplacer des mots spécifique
function bpc_filter_qod_text( $text ) {
    $text = str_replace( 
        array( ' I ', ' me ', ' the ', ' is ', ' am ', ' are ' ),
        array( ' I, a descendent of savannah-dwelling hominids that somehow evolved an astounding capacity for self-reflection, ', ' the cooled-off stellar matter I call "me" ', ' the trillions of atoms that make up the ', ' seems, without the mind-boggling perspective of quantum physics, to be ', ' cannot, due to the Heisenberg Uncertainty Principle, be determined not to be ', ' appear to our best scientific instruments to be ' ),
        $text
    );
    return $text;
}

// Filter: barré le texte qui précède le nom de l'auteur et ajouter Carl Sagan à la suite
add_filter( 'bpc_qod_author', 'wpshout_filter_qod_author' );
function wpshout_filter_qod_author( $text ) {
    $text = '<strike>' . $text . '</strike> Carl Sagan';
    return $text;
}

// Action: Ajouter un titre
add_action( 'bpc_before_get_qod_text', 'bpc_set_up_quote' );
function wpshout_set_up_quote() {
    echo '<h4>Carl Sagan Quote of the Day for ' . date( 'F j, Y') . ':</h4>';
}

// Action: Ajouter une image
add_action( 'bpc_after_get_qod_text', 'bpc_add_carl_boom' );
function bpc_add_carl_boom() {

    echo '<div><img class="aligncenter" src="' . plugin_dir_url( __FILE__ ) . 'carl_sagan_mind_blown.gif"></div>';
}

Như bạn có thể thấy, đây là những cách sử dụng khá chuẩn của " add_action () "Và" add_filter () "Và cả hai hàm đều được đặt trên dấu ngoặc vuông mà chúng tôi gọi là" bpc_qod_text ".

Kết quả cuối cùng là plugin của chúng tôi hiện có thể mở rộng: nhà phát triển thứ hai có thể xem sửa đổi plugin và nói "Tôi muốn Carl Sagan nói », Và làm điều đó trong khi sử dụng plugin gốc làm cơ sở, giống như các chủ đề mẹ và con trên WordPress.

Đây là một mẹo như vậy làm cho một plugin như WooC Commerce, rất phổ biến, cho phép bạn thêm các tính năng mới.

Đó là nó cho hướng dẫn này. Tôi hy vọng bạn hiểu rõ hơn các trường hợp sử dụng khác nhau của các bộ lọc và hành động WordPress.