wordpress - 优先顺序如何影响 WordPress 中的 add_action 和 do_action 链?
问题描述
我在 WordPress 中有两个动作“链”(add_action
's 和do_action
' 链接在一起),我需要在开始第二个链之前完成所有第一个链。
使用priority
顺序我可以一个接一个地触发每个链的启动,但是我担心当第二个链启动时,第一个链中间的一个大循环仍然会运行。
例子:
由于first_chain_first_loop
动作的优先级为10
,并且second_chain_first_loop
动作的优先级为11
,整个第一个动作链(first_chain_first_loop
+ first_chain_second_loop
)会在second_chain_first_loop
开始之前处理吗?
还是完成second_chain_first_loop
后立即开始first_chain_first_loop
?如果是这种情况,我如何确保第二个链在触发第二个链之前等待第一个链完成(包括大循环)。
//First chain of actions - Has early priority but a large loop in the middle
add_action( 'init', 'first_chain_first_loop', 10 );
function first_chain_first_loop() {
for ( $i=0; $i < 10; ++$i ) {
do_action( 'first_chain_second_loop_action', $i );
}
}
add_action( 'first_chain_second_loop_action', 'first_chain_second_loop', 10, 1 );
function first_chain_second_loop( $i ) {
for ( $i=0; $i < 1000000000; ++$i ) {
do_action( 'first_chain_logic_function_action', $i );
}
}
add_action( 'first_chain_logic_function_action', 'first_chain_logic_function', 10, 1 );
function first_chain_logic_function( $i ) {
//Do stuff here
}
//Second chain of actions - Has later priority
add_action( 'init', 'second_chain_first_loop', 11 );
function second_chain_first_loop() {
for ( $i=0; $i < 10; ++$i ) {
do_action( 'second_chain_second_loop_action', $i );
}
}
add_action( 'second_chain_second_loop_action', 'second_chain_second_loop', 10, 1 );
function second_chain_second_loop( $i ) {
for ( $i=0; $i < 10; ++$i ) {
do_action( 'second_chain_logic_function_action', $i );
}
}
add_action( 'second_chain_logic_function_action', 'second_chain_logic_function', 10, 1 );
function second_chain_logic_function( $i ) {
//Do stuff here
}
解决方案
推荐阅读
- graph - 建议在 Angular 6 中使用图表 api
- laravel-5 - 推送到生产服务器时的 Laravel 存储问题
- ios - 使用 Fastlane 扫描 SonarQube iOS 项目中的分支名称
- django - I have a file generated from Django, I need to send that file as response to frontend using drf?
- javascript - Test NestJs Service with Jest
- c# - 我如何从两个列表中分组?
- javascript - Function not working after reset button pressed
- c# - 序列化和反序列化数据的正确方法?
- r - Why do xyplot() and dotplot() generate different plots with the same arguments?
- c# - Does Required attribute works for properties Excluded from binding in Model while passing to Actionresult in Asp.Net mvc