gpt4 book ai didi

php - do_action 和 add_action 如何工作?

转载 作者:IT王子 更新时间:2023-10-29 00:00:34 25 4
gpt4 key购买 nike

我正在尝试找出 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

}

所以我创建了另一个函数来指出那个钩子(Hook)是这样的

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

不确定如何将代码行添加到上述函数可能起作用的那个钩子(Hook)?根据我在测试环境中的尝试,没有任何帮助。如果我理解正确的 do_action 更像是包含一个文件???如果不是请告诉我。

谢谢。

最佳答案

do_action 创建一个 Action 钩子(Hook),add_action 在调用该钩子(Hook)时执行钩子(Hook)函数。

例如,如果您在主题的页脚中添加以下内容:

do_action( 'my_footer_hook' );

您可以从 functions.php 或自定义插件回显该位置的内容:

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

您还可以将变量传递给 Hook :

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";
}

在您的情况下,您可能正在尝试根据条件过滤值。这就是过滤器 Hook 的用途:

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

引用

编辑(更新引用链接)

关于php - do_action 和 add_action 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26781857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com