do_action과 add_action의 차이점 잘못되었을 수도 있습니다.

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

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( 'unique_name' )자신 만의 액션을 만드는 데 사용하십시오 .

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

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

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

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


답변

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

플러그인 코드가 이전에 실행 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.

답변

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 !';
}


답변

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

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