apply_filters (…)는 실제로 WordPress에서 무엇을합니까?


123

WordPress의 일부 기능을 이해하려고하는데 apply_filters (...)가 실제로 하는 일에 대해 머리를 이해할 수 없습니다 .

누군가가 몇 가지 예를 들어 나를 위해 이것을 정리할 수 있습니까?



주의 사항 apply_filters()은 필터에 모두 적용되는 함수에 대한 믿을 수 없을만큼 오해의 소지가 이름 행동 목표 기능에 매여
cameronjonesweb을

@NabilKadimi, 훌륭한 제안, dev.themeblvd.com/tutorial/filters/#highlighter_604585 하지만이 함수가 인수를 허용하지 않는 경우 (내가 말하는 함수를 보려면 링크를 클릭하십시오) $ output 변수는 어떻게 변경됩니까? , 그가 다음 코드 섹션에서 설명하는 것처럼?
라 메쉬 Pareek

@RameshPareek 링크가 예상대로 작동하지 않는 것 같습니다. Github 요점을 사용하십시오.
Nabil Kadimi

죄송합니다! 해당 페이지 의 예제 1 : 기본 사항 으로 스크롤 하십시오.
Ramesh Pareek

답변:


104

apply_filters($tag, $value)'value'인수를 add_filter지정된 필터 'tag'에 'hooked'(사용 ) 각 함수에 전달합니다 . 각 함수는 값에 대해 일부 처리를 수행하고 시퀀스의 다음 함수에 전달할 수정 된 값을 반환합니다.

예를 들어, 기본적으로 (WordPress 2.9에서) the_content 필터는 다음 함수 시퀀스를 통해 값을 전달합니다.

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode

또한 값을 apply_filters($value)지우는 것처럼 보이는 경우 값을 사용하지 않는 모든 것을 에코하는 것을 잊지 마십시오 ...
MrMesees

32

늦은 답변

간단한 설명

apply_filters() 상호 작용 global $wp_filters배열 . 기본적으로 현재 필터 (또는 후크)에 액션 (/ 콜백 함수)이 연결되어 있는지 확인한 다음 호출합니다.

긴 설명

콜백 / 액션을 필터 또는 후크에 연결할 때 전역 필터 배열에 콜백 이름을 추가하기 만하면됩니다. 코드의 호출 (예를 들어, 템플릿, 코어 또는 플러그인 파일)에 때 한 후, do_action()또는 apply_filters()발생 후 워드 프레스는 배열을 통해 검색 및 콜백을 호출합니다. 후크보다 필터에서 더 특별한 것은 콜백을 실행하는 대신 값 (추가 처리를 위해)을 반환한다는 것입니다. 요약하자면 후크는 데이터 를 삽입 하는 것이고 필터는 데이터 를 수정 하는 것입니다.


19

가장 인기있는 답변과 추가 리소스를 고려하여 얻은 정보는 다음과 같습니다.

  • $ tag는 후크 이름의 동의어 인 것 같습니다. (그것은 나에게 특히 직관적이지 않습니다.)
  • the_content는 "필터"유형의 후크 예입니다.
  • the_content 후크는 여러 필터로 구성됩니다.
  • 필터는 데이터를 수정합니다. 기본적으로 데이터베이스를 필터링하여 사용자가보기 전에 데이터를 변경합니다.
  • 예를 들어 apply_filters ()의 일반적인 용도는 $ content에 the_content 필터를 적용하는 것입니다. 이 경우 이중 리턴은 <p>태그 로 변환되고 웃는 얼굴은 아이콘으로 변환됩니다.
  • "the_content"는 후크이고 "the_content ()"는 함수입니다.

1

가장 기본적인 용어로 apply_filters는 필터 후크를 초기화하는 데 사용됩니다. add_filter는 이미 생성 된 후크에 새 기능을 할당합니다.


3
죄송합니다. 이것은 잘못된 방법입니다. apply_filters ()는 이미 초기화 된 필터 후크를 호출하고 add_filter ()는 필터 후크를 생성하는 호출입니다. 나는 당신이 실제로 이것을 의미한다는 것을 알고 있지만, 당신은 잘못된 방향으로 기능을 가지고 있습니다!
Brian C

apply_filters ($ tag, $ value); 코드에서 add_filter ();
Styledev 2010 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.