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

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

May 16, 2016 pm 08:02 PM
hook wordpress 기능

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

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><?php var_dump( $GLOBALS['wp_filter'] ); ?></pre>
로그인 후 복사

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

20151222154645343.png (388×432)

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

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 대 Flutter: 모바일 개발을 위한 최고의 선택 PHP 대 Flutter: 모바일 개발을 위한 최고의 선택 May 06, 2024 pm 10:45 PM

PHP 대 Flutter: 모바일 개발을 위한 최고의 선택

golang 함수에서 새 함수를 동적으로 생성하기 위한 팁 golang 함수에서 새 함수를 동적으로 생성하기 위한 팁 Apr 25, 2024 pm 02:39 PM

golang 함수에서 새 함수를 동적으로 생성하기 위한 팁

C++ 함수 이름 지정 시 매개변수 순서에 대한 고려 사항 C++ 함수 이름 지정 시 매개변수 순서에 대한 고려 사항 Apr 24, 2024 pm 04:21 PM

C++ 함수 이름 지정 시 매개변수 순서에 대한 고려 사항

Java로 효율적이고 유지 관리 가능한 함수를 작성하는 방법은 무엇입니까? Java로 효율적이고 유지 관리 가능한 함수를 작성하는 방법은 무엇입니까? Apr 24, 2024 am 11:33 AM

Java로 효율적이고 유지 관리 가능한 함수를 작성하는 방법은 무엇입니까?

C++ 함수 기본 매개변수와 가변 매개변수의 장단점 비교 C++ 함수 기본 매개변수와 가변 매개변수의 장단점 비교 Apr 21, 2024 am 10:21 AM

C++ 함수 기본 매개변수와 가변 매개변수의 장단점 비교

Excel 함수 수식의 전체 모음 Excel 함수 수식의 전체 모음 May 07, 2024 pm 12:04 PM

Excel 함수 수식의 전체 모음

참조 유형을 반환하는 C++ 함수의 이점은 무엇입니까? 참조 유형을 반환하는 C++ 함수의 이점은 무엇입니까? Apr 20, 2024 pm 09:12 PM

참조 유형을 반환하는 C++ 함수의 이점은 무엇입니까?

C++ 함수에서 참조 매개변수 및 포인터 매개변수의 고급 사용 C++ 함수에서 참조 매개변수 및 포인터 매개변수의 고급 사용 Apr 21, 2024 am 09:39 AM

C++ 함수에서 참조 매개변수 및 포인터 매개변수의 고급 사용

See all articles