sourcecode

do_action과 add_action은 어떻게 작동합니까?

copyscript 2023. 2. 28. 23:43
반응형

do_action과 add_action은 어떻게 작동합니까?

do_action과 add_action이 정확히 어떻게 작동하는지 찾고 있습니다.이미 add_action으로 검토했지만 do_action은 새로 시도하고 있습니다.이게 내가 시도했던 거야

function mainplugin_test() {

$regularprice = 50;

if(class_exists('rs_dynamic')) {
$regularprice = 100;
}

// and doing further
//like i echoing the regular price
echo $regularprice; //It print 100 from this code

}

이제 메인 파일에 코드를 거의 넣지 않고 do_action을 생성하여 코드 혼란 문제를 방지할 예정입니다.

    function mainplugin_test() {

    $regularprice = 50;

    do_action('testinghook');

// and doing further
//like i echoing the regular price
echo $regularprice; //It should print 100 but it print 50

    }

그래서 그 훅을 포인트로 하는 다른 기능을 만들었습니다.

function anothertest() {
if(class_exists('rs_dynamic')) {
$regularprice = 100;
}
}
add_action('testinghook','anothertest');

위의 기능이 작동할 수 있는 후크에 코드 줄을 추가하는 방법을 잘 모르시겠습니까?테스트 환경에서 시도했더니 아무 것도 도움이 되지 않았습니다.올바른 do_action은 파일을 포함하는 것에 가깝다고 이해하면--그렇지 않다면 조언해 주세요.

감사해요.

do_action액션 후크를 만듭니다.add_action는 해당 후크가 호출되면 후크 기능을 실행합니다.

예를 들어, 테마 바닥글에 다음을 추가하는 경우:

do_action( 'my_footer_hook' );

함수에서 해당 위치의 콘텐츠를 에코할 수 있습니다.php 또는 커스텀 플러그인:

add_action( 'my_footer_hook', 'my_footer_echo' );
function my_footer_echo(){
    echo 'hello world';
}

변수를 후크에 전달할 수도 있습니다.

do_action( 'my_footer_hook', home_url( '/' ) );

콜백 함수로 사용할 수 있는 것은 다음과 같습니다.

add_action( 'my_footer_hook', 'my_footer_echo', 10, 1 );
function my_footer_echo( $url ){
    echo "The home url is $url";
}

이 경우 조건에 따라 값을 필터링하려고 할 수 있습니다.필터 훅의 용도는 다음과 같습니다.

function mainplugin_test() {
    echo apply_filters( 'my_price_filter', 50 );
}

add_filter( 'my_price_filter', 'modify_price', 10, 1 );
function modify_price( $value ) {
    if( class_exists( 'rs_dynamic' ) )
        $value = 100;
    return $value;
}

언급

편집(갱신된 참조 링크)

인쇄되지 않은 이유100,왜냐면$regularprice이내에anothertest()함수는 해당 함수의 로컬입니다.변수$regularprice부모에게 사용됨mainplugin_test()함수가 에서 사용되는 변수와 동일하지 않습니다.anothertest()기능, 각각 다른 범위 내에 있습니다.

즉, 다음 중 하나를 정의해야 합니다.$regularprice또는 인수를 매개 변수로 전달할 수 있습니다.do_action_ref_array와 같다do_action대신 두 번째 파라미터를 파라미터 배열로 받아들입니다.

인수로 전달:

function mainplugin_test() {

    $regularprice = 50;
    
    // passing as argument as reference
    do_action_ref_array('testinghook', array(&$regularprice));

    echo $regularprice; //It should print 100

}

// passing variable by reference
function anothertest(&$regularprice) {
    if(class_exists('rs_dynamic')) {
        $regularprice = 100;
    }
}
// remain same
add_action('testinghook','anothertest');

사실, 그...add_action액션 후크입니다.액션과 에 따라 특정 포인트에서 액션(등록된 핸들러)을 호출하기 위해 사용됩니다.do_action는 등록된 액션을 수동으로 호출하기 위해 사용됩니다.예를 들어 다음과 같습니다.

add_action('some_hook', 'handler_for_some_hook');

이 핸들러는 사용자가 실행하거나 스크립트가 다음을 수행할 때 호출됩니다.some_action단, 필요에 따라서, 이 조작을 수동으로 기동할 수 있습니다.do_action그러니까 기본적으로는do_action는 등록된 액션훅을 호출하면 호출합니다.자세한 내용은 Codex를 참조하십시오.

//do_action을 사용하여 워드프레스 Ex에서 사용하는 자체 태그(훅)를 만듭니다.여기서 이것을 호출하기 위해 1개의 커스텀 함수를 추가했습니다.add_action에서 임의의 커스텀태그명과 함께 함수명을 추가했습니다.do_action(내 커스텀태그명)을 사용합니다.

function mywork()
{
    echo "display my name";
}

add_action('mytag','mywork');

do_action('mytag');

---add_action()---

function()에 의해 영향을 받는 후크 고유의 후크

 add_action( hook, **function**() )

이것은 워드프레스의 기능과 동작을 변경할 수 있는 특정 "훅"으로 변경합니다.

언급URL : https://stackoverflow.com/questions/26781857/how-do-do-action-and-add-action-work

반응형