당신이 보기에 일부 워드 프레스 플러그인 운이 좋은가? WooCommerce, 쉬운 자릿수 다운로드, 중력 양식 : 이러한 각 플러그인은 회사 전체에서 제공하며 수십 개의 타사 확장 기능과 플러그인의 잠재력을 추가하는 기능이 점점 더 추가됩니다. 이 시간 동안 대부분의 다른 플러그인은 진행되지 않습니다.

단일 플러그인이 어떻게 번성하는 기술 생태계의 기초가 될 수 있습니까? 많은 답변이 있습니다 : 최초의 시장 출시, 훌륭한 제품 제작, 마케팅에 정통한 것, 그리고 그 사이의 모든 것. 그러나 오늘 우리는 WordPress 후크 시스템을 통한 확장 성이라는 기술적 대답의 중요한 부분에 초점을 맞출 것입니다.

오늘 우리는 다음의 예를 사용할 것입니다. 워드 프레스 플러그인 플러그인에 확장성 상태를 부여하는 두 가지 주요 기능, 즉 apply_filters() 및 do_action()을 다룹니다.

확장 프로그램 : 플러그인 확장

그러므로 우리가 "확장"이라고 말할 때 우리는 다른 사람들을 위해 만들어진 플러그인을 의미한다는 것이 분명합니다. 예를 들어 보겠습니다. " WooCommerce를위한 스트라이프 ".

이 확장 프로그램은 아직 수행하지 않은 경우 아무 작업도 수행하지 않습니다. WooCommerce. 설치하면 WooCommerce, 다음 구매 및 설치 " 스트라이프 대상 WooCommerce 별도의 플러그인으로, WooCommerce의 기능을 확장하여 Stripe 지불 게이트웨이를 통해 지불을 시작할 수 있습니다.

따라서 특정 방식으로 다른 플러그인을 개선하는 플러그인이 있습니다. 확장입니다. 이들은 WordPress 생태계의 부사입니다.

함수 : apply_filters () 및 do_action ()은 어떻게 작동합니까?

다음 질문 : WooCommerce는 확장 된 기능을 어떻게 보게됩니까? 결국 전자 상거래 플러그인을 작성하는 것은 상상하기 쉽습니다. 몇 개의 지불 게이트웨이에서만 작동합니다. ". 그런 다음 정말로 Stripe을 원한다면 WooCommerce를 완전히 수정하고 아마도 StripeCommerce라는 자체 도구를 만들어야 할 것입니다. StripeCommerce는 WooCommerce의 경쟁자가되거나 단순히 지불 할 여력이있는 고객 중 한 사람의 사이트에 있습니다. 맞춤형 지원.

고민하는 것은 엉망이지만 운 좋게 WooCommerce는 훨씬 더 나은 일을하고 있습니다. apply_filters ()와 do_action ()의 두 가지 기능을 사용합니다. 이 두 기능을 사용하면 WordPress에 대괄호를 만들 수 있으며 이는 일반적으로 WordPress Hooks 시스템의 기본 부분입니다.

apply_filters ()와 do_action () 다소 간단한 차이점 :

  • apply_filters ()를 사용하면 필터를 함수에 연결할 수 있습니다.
  • do_action ()을 사용하면 액션을 함수에 연결할 수 있습니다.

어떻게 작동하는지 예제를 살펴 보겠습니다.

WooPress 후크 사용 예.

이 예에서는 "오늘의 견적"플러그인과이 플러그인을 특정 방식으로 수정하는 확장 프로그램을 사용합니다. 전체 코드를 따라 보려면 플러그인을 ZIP 파일 https://wpshout.com/media/2016/10/plugins.zip으로 다운로드하세요.

원래 플러그인

이 플러그인은 외부 견적 라이브러리에 의해 노출 된 API를 사용하고 결과 견적을 24 시간마다 새로 고치는 WordPress 임시 데이터로 저장합니다. 언제든지이 기사로 돌아 오면 "생명"이라는 주제에 대한 오늘의 임의의 인용문을 볼 수있을 것입니다.

플러그인 확장

우리가 알다시피, 대부분의 인용문의 문제점은 "Carl Sagan"이 말하지 않는다는 것입니다. 확장 프로그램은 여러 도구를 사용하여이 문제를 해결합니다.

  • 오늘 날짜와 Carl Sagan의 인용문을 보여주는 큰 헤더,
  • Carl Sagan이 말한 것으로 인용을 바꾸는 특정 단어 대체
  • 원래 견적의 작성자가 변경되고 이제 견적이 Carl Sagan에 올바르게 부여됩니다.

다음은 플러그인과 확장 기능입니다.

인용 된 액션

르 코드

이를 위해서는 두 단계가 필요합니다.

원래 플러그인은 후크 (액션 후크 및 필터 후크)를 정의하여 외부 코드가 키 포인트에서 자체 코드를 수정하거나 추가 할 수 있도록합니다. 플러그인은이를 위해 apply_filters () 및 do_action ()을 사용합니다.

확장은 액션과 필터에 대한 후크 기능을 정의합니다-필요한 방식으로 원래 플러그인을 수정합니다.

원래 플러그인의 키 코드

코드에서 가장 중요한 부분은 API에서 데이터를 가져온 후 수행하는 작업입니다. 이 데이터는 두 가지 요소가있는 배열로 사용할 수 있습니다. 텍스트 : 인용 텍스트; 저자 : 인용문을 말한 사람. 따라서 코드는 다음과 같습니다.

add_shortcode ( 'extensible_plugin_demo', 'bpc_output_extensible_plugin'); function bpc_output_extensible_plugin () {ob_start (); // 디스플레이 전에 후크! do_action ( 'bpc_before_get_qod_text'); $ qod_data = bpc_get_qod_data (); if (is_array ($ qod_data)) {echo ' '; $ qod_text = $ qod_data [ '텍스트']; $ qod_author = $ qod_data [ '저자']; // 콘텐츠 필터링! $ qod_text = 적용 _ 필터 ( 'bpc_qod_text', $ qod_text); $ qod_author = 적용 _ 필터 ( 'bpc_qod_author', $ qod_author); echo $ qod_text; 에코 ' '; echo $ qod_author; 에코 ' '; } // 나머지 출력 후 액션 후크! do_action ( 'bpc_after_get_qod_text'); 반환 ob_get_clean (); }

확장의 키 코드

플러그인은 원래 플러그인을 수정하기위한 작업 및 필터 이외의 다른 것으로 구성되지 않습니다. 확장 코드는 다음과 같습니다.

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>';
}

보다시피, 이것들은 " ADD_ACTION () "그리고" add_filter () "그리고 두 함수는 우리가"bpc_qod_text "라고 부르는 대괄호에 연결됩니다.

결과적으로 플러그인을 확장 할 수있게되었습니다. 두 번째 개발자는 플러그인 수정을보고 "칼 세이건이 », 그리고 WordPress의 부모 및 자식 테마와 같이 원본 플러그인을 기본으로 사용하면서 수행합니다.

이것은 WooCommerce와 같은 플러그인을 매우 인기있게 만들어서 새로운 기능을 추가 할 수있는 트릭입니다.

이 튜토리얼에서 끝났습니다. 필터 및 WordPress 작업의 다양한 사용 사례를 더 잘 이해하기를 바랍니다.