add_filter와 apply_filters의 차이점


17

나는 여기 add_filter()apply_filters()여기 의 차이점에 대한 적절한 설명을 찾았지만 찾을 수 없었습니다.

누구나 사용하기 전에 add_filter또는 apply_filters한 맥락에서 고려해야 할 정보 나 논리를 말해 줄 수 있습니까 ?

그것은 다른 하나가 아닌 하나의 명령을 사용하게 만드는가?

  • add_filter변수에서 apply_filters실행 되기를 기다리는 함수 대기열에 함수를 추가하고 함수를 순서대로 실행하는 것이 맞 습니까?

  • apply_filters인수 (실행할 함수의 이름)로 호출 할 때 큐에서 다른 모든 함수 (있는 경우)보다 먼저 해당 함수를 실행하는 것이 올바른가요 ?


2
여기여기 에있는 기존 문서 는 어떻습니까?
t31os

3
나는 이것이 실제로 좋은 질문이라고 생각합니다. 새로운 워드 프레스 개발자로서 이것은 혼란스러운 개념 일 수 있습니다.
Shawn

답변:


26

코덱스 에서 다음 대부분을 찾을 수 있습니다 .


apply_filters

$tag이 함수를 호출하면 필터 후크에 연결된 콜백 함수 가 호출됩니다. 이 함수는 $ tag 매개 변수를 사용하여 지정된 새 후크의 이름으로이 함수를 호출하여 새 필터 후크를 작성하는 데 사용할 수 있습니다.

$value = apply_filters( $tag, $value, $var_1, $var_2, ... );

본질적 :
사용 apply_filters하는 필터링 소정 $value- 값 자체에 대해서뿐만 아니라 임의로 제공 변수 $var_1내지 $var_n.


add_filter

특정 필터 동작에 기능을 연결하십시오.

add_filter( $tag, $function_to_add, $priority, $accepted_args );

본질적으로 : 이전에 생성했을 수도있는 (또는 기본 제공 필터 동작이거나 플러그인 / 테마에서 파생 된 ) 지정된 필터 동작 ( )에 사용자 지정 함수를 연결하는 데
사용 add_filter합니다 . $tagapply_filters


여기에 허구의 예가 있습니다 :

function print_initials( $name ) {

    if ( ! is_string( $name ) ) {
        return;
    }

    $fragments = explode( ' ', $name );

    /**
     * Filter wether to print initials in reverse order.
     *
     * @param bool $reverse Print initials in reverse order?
     */
    if ( apply_filters( 'reverse_initials', FALSE ) ) {
        $fragments = array_reverse( $fragments );
    }

    foreach ( $fragments as $f ) {
        echo substr( $f, 0, 1 );
    }
}

print_initials( 'Some Guy' ); // outputs: SG

add_filter( 'reverse_initials', '__return_true' );

print_initials( 'Some Guy' ); // outputs: GS

이제 함수를있는 그대로 호출하면 이니셜이 왼쪽에서 오른쪽으로 인쇄됩니다. 이것이 기본 동작으로 정의한 것이기 때문입니다.

두 번째로, __return_true필터 동작에 연결된 필터 함수 가 항상 반환 TRUE되어 이니셜이 오른쪽에서 왼쪽으로 출력 되기 때문에 이니셜을 역순으로 가져옵니다 .


3
이것은 훌륭한 답변이며 필터를 재정의하는 방법을 보여줍니다. 감사.
Shawn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.