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
'sourcecode' 카테고리의 다른 글
$.getJ에서 변수를 반환하려면 어떻게 해야 합니까?SON 함수 (0) | 2023.02.28 |
---|---|
Rspec을 사용하여 Rails 3.0.11 컨트롤러의 JSON 형식을 테스트하려면 어떻게 해야 합니까? (0) | 2023.02.28 |
Woocommerce REST API에서 범주별로 제품 가져오기 (0) | 2023.02.28 |
woocommerce 커스텀 오더 상태를 추가하려면 어떻게 해야 하나요? (0) | 2023.02.28 |
스프링 부트:장치 테스트에서 클래스 경로에서 리소스를 읽는 방법 (0) | 2023.02.28 |