>  기사  >  백엔드 개발  >  WordPress_php 스킬에서 함수 후크의 역할과 기본 사용법을 분석합니다.

WordPress_php 스킬에서 함수 후크의 역할과 기본 사용법을 분석합니다.

WBOY
WBOY원래의
2016-05-16 20:02:06934검색

워드프레스의 플러그인 메커니즘은 실제로 이 후크입니다. 중국어로 후크로 번역되어 워드프레스 코어 실행에 참여할 수 있게 해줍니다. 아래에서 자세히 알아보세요.
훅 분류

Hook는 두 가지 유형으로 나뉘는데 하나는 Action이고 다른 하나는 Filter입니다. 이 두 후크의 구현 원리는 기본적으로 동일합니다. 나중에 언급하겠지만 사용법의 차이점은 필터에는 반환 값이 있지만 작업에는 없다는 점입니다.

액션의 아이디어는 이메일 보내기 등과 같은 상황이나 특별한 위치에서 일부 기능을 수행할 수 있도록 하는 것입니다. 필터를 사용하면 WordPress 코어가 사용해야 하는 값을 수정할 수 있습니다. WordPress는 이러한 값을 사용하여 함수의 반환 값 등과 같은 작업을 수행합니다.

액션훅

wp_head는 매우 일반적으로 사용되는 액션 후크입니다. 개발자는 wp_head() 함수를 head 태그에 추가합니다. 실제로 wp_head 후크를 호출하는 함수입니다.

플러그인 개발자가 head 태그에 문장을 추가하려는 경우 wp_head 후크를 사용할 수 있습니다. 다음은 간단한 예입니다.

//在 head 标签添加一些内容
function Bing_add_head_tag(){
  echo '添加内容';
}
add_action( 'wp_head', 'Bing_add_head_tag' );

코드 추가 후 프론트엔드 웹페이지의 소스코드를 보면 head 태그에 우리가 추가한 내용을 확인할 수 있습니다.

20151222154540066.png (437×83)

위는 문장을 출력하는 간단한 예시입니다. 이 후크를 사용하면 404 페이지가 나타날 때 관리자에게 이메일을 보내는 플러그인을 만들 수도 있습니다. 아래에 간단하게 작성했습니다.

//遇到 404 页面给管理员发送邮件
function Bing_404_page_mail(){
  if( !is_404() ) return;//如果不是 404 页面就退出函数
  $to = get_option( 'admin_email' );//获取管理员地址
  $subject = '遇到 404 页面啦!';//邮件标题
  $message = '404 页面的地址:http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];//邮件内容
  wp_mail( $to, $subject, $message );//发送邮件
}
add_action( 'wp_head', 'Bing_404_page_mail' );

필터 후크

제 개인적인 경험에 따르면 필터 후크는 특히 PHP에 익숙하지 않은 사람들에게는 이해하기 어려울 수 있습니다.

필터 후크를 사용하면 항목의 값을 변경할 수 있습니다. 필터 콜백 함수는 현재 값인 매개변수를 허용합니다. 기사 콘텐츠를 호출하는 데 사용되는 the_content() 함수를 기억하세요. 이 함수는 the_content 필터를 제공합니다.

the_content 후크에 함수를 추가합니다. 이 함수는 현재 값인 매개변수를 받아야 합니다.

//文章内容全部链接新窗口打开
function Bing_autoblank( $content ){//$content 变量就是文章内容,因为其它过滤器也要过滤,所以这个内容可能是经过其它函数过滤的
  $content = str_replace( '<a', '<a target="_blank"', $content );//添加 target="_blank"
  return $content;//必须要把过滤后的内容返回回去,否则值就丢了
}
add_filter( 'the_content', 'Bing_autoblank' );

후크 원리

실제로 add_action() 및 add_filter()를 호출하면 $wp_filter 전역 변수에 배열 요소만 추가됩니다. 게다가 액션과 필터는 공통 전역 변수입니다. 같은 이름을 가지고 있습니다.

do_action()이 호출되면 $wp_filter 전역 변수에서 이 액션에 추가된 함수를 검색하여 루프에서 실행합니다.

apply_filters()는 do_action()보다 한 단계 더 있는데, 호출될 때마다 이 함수의 반환 값을 받고, 최종적으로 여러 번 필터링한 값을 반환하여 사용하는 것입니다.

현재 후크 목록 가져오기
WordPress 작업 및 필터는 플러그인 메커니즘의 핵심 부분으로, 특정 위치에서 수행해야 하는 작업을 적극적으로 추가할 수 있도록 해줍니다. 일반적으로 함수를 마운트하려면 add_action() 및 add_filter() 함수를 사용합니다.

이러한 후크는 $wp_filter 전역 변수에 저장되므로 후크 목록을 얻으려면 $wp_filter 전역 변수를 직접 가져올 수 있습니다.

<pre class="brush:php;toolbar:false"><&#63;php var_dump( $GLOBALS['wp_filter'] ); &#63;>

위 코드는 후크 목록을 출력합니다.

20151222154645343.png (388×432)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.