수색…


통사론

  • add_action ($ tag, $ function_to_add)
  • add_action ($ 태그, $ function_to_add, $ 우선 순위)
  • add_action ($ 태그, $ function_to_add, $ 우선 순위, $ accepted_args)

매개 변수

매개 변수 세부
$ 태그 (문자열) (필수) $function_to_add 가 연결되는 작업의 이름
$ function_to_add ( callable ) (필수) $tag 가 가리키는 동작을 수행 할 때 호출해야하는 함수
우선 순위 $ (int) (선택 사항) 기본값 : 10 특정 작업과 관련된 기능이 실행되는 순서를 지정하는 데 사용됩니다. 낮은 숫자는 이전 실행과 일치하고 동일한 우선 순위를 가진 함수는 작업에 추가 된 순서대로 실행됩니다.
$ accepted_args (int) (선택 사항) 기본값 : 1 함수가 수락하는 인수의 수입니다.

비고

add_action() 함수는 PHP 함수를 특정 액션 "태그"또는 이름과 연결하는 액션 훅을 생성합니다. 액션이 특정 태그로 do_action() (또는 do_action_ref_array() ) 호출에 의해 "트리거"되면 그 태그에 "훅으로 연결된"모든 함수가 실행됩니다.

대부분의 경우이 함수는 테마의 functions.php 파일이나 플러그인 파일 또는이 중 하나가로드 한 다른 소스 파일에서 사용해야합니다.

이 함수는 플러그인 API 의 일부입니다.

기본 액션 훅

add_action() 의 가장 기본적인 응용 프로그램은 WordPress 설치 소스 코드의 특정 위치에서 실행될 사용자 정의 코드를 추가하는 것입니다. WordPress Core 에서 제공하는 액션을 사용하거나 플러그인과 같은 타사 코드로 만든 액션을 사용하거나 테마.

사이트의 <head></head> 섹션에 내용을 추가하려면 - 사이트의 저작권 정보를 찾을 수있는 위치를 나타내는 <link> 메타 요소 추가 - add_action() 을 사용하여 인쇄 할 함수를 첨부 할 수 있습니다 'wp_head' 액션 (WordPress가 <head> 섹션을 만들 때 "트리거")에 적절한 마크 업 :

function add_copyright_meta_link() {
  echo( '<link rel="copyright" href="' . get_home_url() . '/copyright">' );
}

add_action( 'wp_head', 'add_copyright_meta_link' );

액션 후크 우선 순위

임의의 수의 기능이 주어진 동작에 "구속"될 수 있습니다. 어떤 경우에는 hooked 함수가 다른 함수의 앞이나 뒤에 실행하는 것이 중요합니다. add_action() , $priority 대한 세 번째 매개 변수가 add_action() 합니다.

$priority 인수가 생략되면이 함수는 기본 우선 순위 인 10 으로 연결됩니다. 액션이 "트리거"하면, "후크"기능은 최소로 추가하는 시작으로 호출됩니다 $priority , 가장 큰과 기능에 진행 $priority . 동일한 우선 순위를 공유하는 훅 된 함수는 추가 된 순서 add_action()add_action() 호출이 실행 된 순서 add_action() 호출됩니다.

예를 들어 타사 플러그인이 'template_redirect' 작업에 훅 기능을 사용하여 방문자를 daily-deal 페이지로 연결하여 외부 전자 상거래 사이트에 대한 제휴 링크로 전달하지만 리디렉션을 원한다고 가정 해 보겠습니다. 로그인 한 사용자에게만 발생합니다. 로그 아웃 한 방문자를 로그인 페이지로 보내려면 자신의 'template_redirect' 후크를 사용해야합니다. 타사 플러그인이 기본 $piority10 인 기능을 연결했다고 판단한 후 우선 순위 9 로 함수를 연결하여 로그인 한 수표가 먼저 발생하도록 할 수 있습니다.

function redirect_deal_visitors_to_login() {
  if( is_page( 'daily-deal' ) && !user_is_logged_in() ) {
    wp_redirect( wp_login_url() );
    exit();
  }
}

add_action( 'template_redirect', 'redirect_deal_visitors_to_login', 9 );

클래스 및 객체 메소드를 액션에 연결

PHP 클래스 는 코드 구성을 개선하고 이름 충돌을 최소화하는 강력한 도구입니다. 어떤 시점이나 다른 시점에서 필연적으로 클래스 메소드에 대한 액션 훅을 만드는 방법에 대한 문제가 발생합니다.

$function_to_add 인자는 종종 함수의 이름을 포함하는 문자열로 보여진다. 그러나 인자의 데이터 타입은 실제로 " callable "이며, 우리의 목적을 위해 "함수 나 메소드에 대한 참조"로 요약 될 수있다.

클래스와 객체의 메소드를 참조하는 데 사용할 수있는 여러 가지 호출 가능한 형식이 있습니다. 그러나 모든 경우에 참조 된 메소드 공개적으로 볼 수 있어야합니다 . public 키워드가 접두어이거나 아무런 visibility 키워드도없는 경우 메소드가 공개됩니다 (이 경우 메소드의 기본값은 public 임).

객체 메소드 액션 후크

객체 메소드는 클래스의 특정 인스턴스에서 실행됩니다.

class My_Class {
  // Constructor
  function My_Class() {
    // (Instantiation logic)
  }

  // Initialization function
  public function initialize() {
    // (Initialization logic)
  }
}

위의 클래스를 다음과 같이 인스턴스화 한 후,

$my_class_instance = new My_Class();

initialize() 메서드는 일반적으로 $my_class_instance->initialize(); 호출하여 객체에서 호출됩니다 $my_class_instance->initialize(); . 메소드를 'init' init'WordPress 액션에 연결하려면 인스턴스에 대한 참조와 객체 메소드의 이름을 포함하는 문자열을 포함하는 배열을 전달하면됩니다.

add_action( 'init', [ $my_class_instance, 'initialize' ] );

add_action() 이 객체 메소드 내에서 호출되면 $this 의사 변수를 사용할 수도 있습니다 :

class My_Class {
  // Constructor
  function My_Class() {
    // (Instantiation logic)
    add_action( 'init', [ $this, 'initialize' ] );
  }

  // Initialization function
  public function initialize() {
    // (Initialization logic)
  }
}

클래스 메서드 액션 후크

클래스 메소드는 특정 인스턴스가 아닌 클래스에서 정적으로 실행됩니다. 다음과 같은 클래스가 주어진다면,

class My_Class {   
  // Initialization function
  public static function initialize() {
    // (Initialization logic)
  }
}

initialize() 메서드는 일반적으로 :: scope-resolution 연산자를 사용하여 호출됩니다 My_Class::initialize(); 예 : My_Class::initialize(); . 정적 클래스 메소드를 WordPress에 연결하는 것은 여러 가지 방법으로 수행 할 수 있습니다.

  • 클래스 이름을 포함하는 문자열과 메소드 이름을 포함하는 문자열로 구성된 배열 사용 :

    add_action( 'init', [ 'My_Class', 'initialize' ] );
    
  • :: operator를 포함하여 메서드에 대한 전체 참조가 포함 된 문자열 전달 :

    add_action( 'init', 'My_Class::initialize' );
    
  • 정적 클래스 메소드 내에서 add_action() 이 호출되면 클래스 이름 대신 self 키워드 또는 __CLASS__ magic-constant를 사용할 수 있습니다. 이러한 항목의 값이 클래스 상속의 경우 다소 반 직관적이되면 일반적으로 권장되지 않습니다.

    class My_Class {
      // Setup function
      public static function setup_actions() {
        add_action( 'init', 'self::initialize' );
      }
    
      // Initialization function
      public static function initialize() {
        // (Initialization logic)
      }
    }
    


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow