do_action과 add_action의 차이점


20

이 질문은 잘못되었을 수도 있습니다. 확실하지 않습니다. 나는 이것에 대해 명확하지 않기 때문에.

add_action함수를 지정된 함수에 연결하는 데 사용된다는 것을 알고 있습니다. 예를 들어 add_action('wp_head'.'myfunc');이제 코드를 입력 한 myfunc내용이에서 실행됩니다 wp_head(). 이것은 분명하지만 do_action그것이 무엇 을 의심하고 있습니까?

나는 이미 사용 가능한 hooks (wp_head, wp_footer, .. etc)와 같이 우리 자신의 후크를 만드는 데 사용된다고 생각합니다. 올 바르면 누구나 간단한 예를 들어 간단한 이해할 수있는 대답을 보여줄 수 있습니까?

인터넷의 차이점을 시도했지만 모두 add_action과 add_filter의 차이점을 가리키고 있습니다. 나는 이것을 명확히하고 싶기 때문에 거기에 가고 싶지 않습니다.

아무도 나를 도울 수 있습니까?

질문 POST 후 수정

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
do_action('custom');

add_action('custom','custom_register');

플러그인에서 이것을 시도했지만 경고 메시지가 나타나지 않았습니다.

그러나 내가 같은 기능을 연결하면 wp_head제대로 작동합니다.

/******************working****************/
add_action('wp_head','custom_register');

콜백을 등록한 do_action('custom'); 후 전화하면 어떻게됩니까 ? 그리고 jQuery가로드되었는지 확인하십시오.
— fuxia

백엔드 나 프론트 엔드에서 경고 메시지를받지 못했습니다
— sun

jQuery가로드됩니다. 내가 같은 기능을 연결하면 wp_head제대로 작동하지만custom
— sun

Sun, 나는 당신의 원래 질문이 toscho에 의해 답변되었다고 생각하며 이것을 해결 된 것으로 표시해야합니다. 편집 # 3과 # 4는 새로운 Question 에 속합니다 .
— brasofilo

답변:


13

do_action( 'unique_name' )자신 만의 액션을 만드는 데 사용하십시오 .

이를 사용 하여 플러그인에 대한 API 를 제공 할 수 있으므로 다른 플러그인은 사용자 정의 조치에 대한 콜백을 등록 할 수 있습니다. 예 : 플러그인에서 do_action을 호출해야합니까?

그러나 테마에서도 사용자 정의 조치 (또는 필터)를 사용할 수 있습니다. 예 : 사용자 정의 섹션을 WordPress 테마로 구현하는 가장 좋은 방법

또한 플러그인과 테마가 함께 작동하도록 결합 할 수 있습니다. 예 : 테마에서 플러그인의 메소드를 사용 가능하게 만드는 방법은 무엇입니까?

요약 : add_action( 'foo' )콜백을 등록하고 등록 된 콜백을 do_action( 'foo' )실행합니다.


내가 얻은 도움에 대한 감사는 주로 API 목적입니다. 샘플을 시험해 보았지만 효과가 없었습니다. 문제가 있습니까? 내 편집 @toscho
— sun

이것을 상속과 같은 다른 사례로 말할 수 있습니까? 수업을 확장하고 재정의하는 intead 우리는 이런 식으로 가고 있습니다. 이 올바른지?
— 태양

@sun Hm, 그렇습니다. 그러나 두 가지 접근법을 결합 할 수 있습니다 .
— fuxia

1

이것은 내 추측이므로, 더 잘 알고 있다면 내 추측을 업데이트 할 수 있도록 의견을 말하십시오.

플러그인 코드가 이전에 실행 wp_head()되었습니다 (추가 된 작업을 호출한다고 가정 할 수 있음). 당신이 때 add_action('wp_head','custom_register'), 당신은 PHP를 말하고있다 (미래에) 때 do_action('wp_head')호출, 호출 custom_register()뿐만 아니라. add_action('custom','custom_register')코드 호출에서도 마찬가지입니다. 코드에서 볼 수 있듯이 호출 do_action('custom')은 이미 이루어졌으며 호출 되었을 때 아직 추가 된 작업이 없습니다. 이것이 콜백을 등록한 do_action('custom') 후 전화 할 때 Toscho가 어떻게되는지 물어 보는 이유 입니다. 백엔드와 프론트 엔드에 대한 귀하의 답변은 모호합니다. 다음 코드에서 마지막 두 줄을 바꾸면 작동한다고 생각합니다.

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
do_action('custom');                    // This is called before it will have an effect.

add_action('custom','custom_register'); // Too late - do_action was already called.

0

do_action: 작업 후크 를 등록하는 동안 add_action: 등록 된 후크에 콜백 기능 을 추가합니다 .

예

템플릿에서 사이드 바 전에 무언가를 인쇄하고 싶다고 가정 해보십시오.

  1. 를 통해 템플릿 파일에 작업 후크 를 추가합니다 .index.php<?php add_action('bp_sidebar_left'); ?>
  2. 이제 functions.php파일 에서 후크에 콜백 함수를 추가하여 원하는 것을 인쇄 할 수 있습니다.

add_action('bp_sidebar_left', 'bp_sidebar_left_cb'); function bp_sidebar_left_cb() { echo 'Hello World !'; }


-1

아래와 같이 사용해야합니다 :

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
.

add_action('custom','custom_register'); // Too late - do_action was already called. 
do_action('custom');                    // This is called before it will have an effect

그것은 나를 위해 노력하고 있습니다
— user112289의
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.