apply_filters 함수 및 변수에 대한 설명


16

"simplr form registration"플러그인의 예제를 통해 PHP를 사용하여 HTML 양식을 작성하는 방법을 배우고 있습니다.

이 코드를보고 있습니다.

$form .= apply_filters('simplr-reg-instructions', __('Please fill out this form to sign up for this site', 'simplr-reg'));

여기서 무슨 일이 일어나고 있는지, 기능이 무엇인지, 왜 'simplr-reg-instructions'와 'simplr-reg'가 필요한지 설명해 주시겠습니까?

이 줄이 왜 간단하지 않을까요?

$form .= 'Please fill out this form to sign up for this site' ;

함수 참조를 읽었지만 여전히 파악할 수 없습니다.

답변:


22

그 라인은 두 가지 별도의 설명이 필요한 두 가지 다른 기능을 사용하고 있습니다.

__ ()

이것은 번역 기능입니다. 설정이 올바르게 수행되면 사전 번역 된 문자열 목록에서 첫 번째 매개 변수를 변환합니다. 설치에이 기능을 사용할 수 있도록 컴파일 된 번역 파일이있는 경우이를 사용합니다. 물론 플러그인은 자체 번역을 패키지해야하므로 두 번째 매개 변수입니다. 문자열의 번역이 다음 과 관련된 번역 파일에 있어야 함을 simplr-reg알려줍니다.__()'Please fill out this form to sign up for this site''simplr-reg' 이 (이 load_plugin_textdomain()기능 은 플러그인에서 이전에 수행됨 ).

그런 다음 함수는 번역을 반환합니다. 반환 할 번역이없는 경우 (예 : 현재 언어에 컴파일 된 번역이없고 문자열에 해당 패키지에 대한 컴파일 된 번역이없는 등) 원래 입력이 반환됩니다.

영어로 된 WordPress 사이트의 __( 'This', 'simplr-reg' )경우 기능적으로 동일합니다.'This' . l10n (로컬라이제이션)에 대한 자세한 내용은 코덱에서 확인하십시오.

http://codex.wordpress.org/I18n_for_WordPress_Developers

apply_filters ()

이 기능을 사용하면 필요에 따라 플러그인이 사용하는 값을 필터링 할 수 있습니다. 이것은 플러그인 개발자로서 파악해야 할 주요 개념 중 하나입니다. WordPress는 기본적으로 액세스 포인트 인 후크를 통해 확장되어 플러그인 작업 실행 시간을 지정하거나 WordPress에서 사용하는 정보 / 데이터 등을 조작 할 수 있습니다.

요청한 코드 스 니펫과 같은 데이터를 조작하려면 함수를 사용하십시오 add_filter(). 작동 방식의 기본 예는 다음과 같습니다.

add_filter( 'simplr-reg-instructions', 'wpse16573_my_filter' );

아마도 첫 번째 주장을 알게 될 것입니다. add_filter위에서 사용 된 것과 동일 합니다. 이것은 후크 이름입니다. 두 번째 인수는 필터 콜백입니다. 함수에 대한 유효한 콜백이어야합니다 (콜백에 대한 자세한 내용은 여기 참조 ). 해당 코드 줄에는 " 'simplr-reg-instructions'후크가 실행될 때 제공된 콜백으로 함수를 실행하십시오."라고 표시되어 있습니다. apply_filters()첫 번째 인수에서 찾은 후크를 실행합니다. 기본적으로 "이 후크에 등록 된 모든 함수를 실행합니다." apply_filters그런 다음 다른 모든 인수 (이 경우 'Please fill out this form to sign up for this site')를 해당 필터의 함수에 전달합니다. 따라서 위에서 사용한 콜백은 다음과 같아야합니다.

function wpse16573_my_filter( $text ){
  $text = "<strong>$text</strong>";
  return $text;
}

워드 프레스에는 두 가지 종류의 후크가 있습니다 : 필터 (여기서 우리가 사용하는 종류)와 동작. 이 둘의 주된 차이점은 필터가 무언가를 반환 할 것을 기대하고 행동은하지 않는다는 것입니다. 이 필터의 경우 위의 예제는 html을 추가합니다.'Please fill out this form to sign up for this site' 하고 반환합니다.

동작 및 후크에 대한 자세한 내용은 여기를 참조하십시오.

http://codex.wordpress.org/Plugin_API


존, 고마워 좋은 대답입니다! 그러나 플러그인 파일에서 "add_filter ( 'simplr-reg-instructions', ..."줄도 찾을 수 없습니다. apply_filter가 어떻게 실행됩니까?
Ash

1
후크에 필터를 추가하지 않으면 원래 입력을 바로 반환합니다. 플러그인이 사용할 필터가 없으며 플러그인 자체를 수정할 필요가 없도록 필요 / 원하는 경우 사용할 수 있습니다.
John P Bloch

+1 우수한 설명-문서처럼 읽는다 ;-)
Eddie B

+1 훌륭한 답변, 내가 찾던 것, 몹시 혼란스러워졌지만 이제는 모든 것이 명확 해졌습니다.)
doz87

5

당신은 여기에 두 개의 서로 다른 기능을 가지고 apply_filters__()

apply_filters 함수는 고유 한 콜백 함수와 함수를 사용하여 변수 값을 변경 / 편집 할 수있는 WordPress 방식입니다 add_filter. 많은 주장을 받아들이지 만 중요한 것은 처음 두 가지입니다.

$something = apply_filters( $tag, $value, $var ... );

$ tag는 다음과 같이 사용되는 필터 후크의 이름입니다 add_filter.

add_filter($tag,callback_function);

$ value는 변경하거나 편집 할 수있는 실제 값입니다.

$ var은 콜백 함수가 사용할 수있는 변수입니다.

__() 함수는 번역에 사용됩니다 :

__($message,$text_domain);

$ message는 번역 할 실제 메시지입니다.

$ text_domain은 플러그인 또는 테마 번역을로드하는 데 사용되는 텍스트 도메인 태그입니다. load_plugin_textdomain()

그게 뭐야?

지역화 모듈에서 $ message의 번역을 검색하고 번역을 PHP return 문으로 전달합니다. $ message에 대한 번역이 없으면 $ message 만 반환합니다.

이제 귀하의 두 가지 기능이 동일한 방식으로 작동합니다. apply_filters는 simplr-reg-instructions필터 후크 와 관련된 모든 콜백 함수를 텍스트를 사용하여 '이 사이트에 가입하려면이 양식을 작성하십시오'라는 번역 된 값 (있는 경우)을 보냅니다. 의 도메인simplr-reg


Bainternet, 고마워요! 플러그인 파일에서 "add_filter ( 'simplr-reg-instructions'", "줄을 찾을 수없는 방법은 무엇입니까?
Ash

플러그인 기능을 확장하거나 필터링하려는 개발자를위한 도구입니다.
Bainternet

여기 add_filter가 필요하지 않습니까? 왜 그런지 모르겠습니다. apply_filters가 add_filter 함수에 의해 후크와 관련된 모든 함수를 실행해서는 안됩니까?
Ash

apply_filtersadd_filter는를 사용하여 자신의 함수를 연결할 수있는 자리 표시 자 이므로 고유 한 기능 을 추가하지 않으면 add_filter가 필요하지 않습니다.
Bainternet
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.