直接调用函数和使用ADD_ACTION调用函数有什么不同?

时间:2016-09-17 作者:DamithRuwantha

以下两种代码的区别是什么?(直接调用函数并使用add\\u操作调用函数)

function pp_submit__link_form(){
      if(isset( $_POST[\'action\']) && $_POST[\'action\']="submit_link" ){
          echo "Hello";
      }
    }
add_action( \'init\', \'pp_submit__link_form\' );
<小时>
function pp_submit__link_form(){
  if(isset( $_POST[\'pp_action\']) && $_POST[\'pp_action\']="submit_link" ){
      echo "Hello";
  }
}
pp_submit__link_form();

4 个回复
SO网友:Dave Romsey

在第一段代码中,pp_submit__link_form() 将在init WordPress中的操作。

在第二段代码中,pp_submit__link_form() 将在调用函数时立即激发。

SO网友:Jonathan Bossenger

在第一个示例中,您正在将函数“pp\\u submit\\uu link\\u form”注册到操作挂钩“init”中。因此,这意味着当WordPress触发操作“init”(通过调用do\\u action(“init”))时,它将包括您的函数调用。

请参见WordPress codex on hooks, actions and filters

在第二个示例中,您只需在php脚本的常规执行中调用该函数,这样它就会在每次加载插件时启动。

从您的示例来看,您似乎想对$\\u POST数据进行处理(可能是在有人发布表单时),因此第一个示例是正确的。

SO网友:Benoti

要调用函数时使用add\\u action()的另一个原因是与之相反的remove\\u action(),它允许任何插件/脚本在操作运行时不调用函数。

add\\u action/add\\u filter、remove\\u action/remove\\u filter是开发人员最大限度地定制插件、主题和核心行为的最佳方式。

因此,在任何正在运行的进程中,您都可以使用add\\u action()删除调用的函数,并在添加自己的函数之后立即删除。例如,从您的代码:

remove_action(\'init\', \'pp_submit__link_form\');
action_action(\'init\', \'my_pp_submit__link_form);

function my_pp_submit__link_form(){
    if(isset( $_POST[\'action\']) && $_POST[\'action\']="submit_link" ){
      echo "Good bye, see you later, I\'m tired";
  }
}

SO网友:T.Todua

1) 直接执行时,几乎无法访问任何重要的WP全局变量,因为查询/变量在add_action 功能。

2) 使用add_action 您可以在必要时执行函数。例如,您想检查登录的用户,然后应该在“init”操作启动后进行检查。

3) add_action 是大多数情况下的推荐方式

4) 具有add_action 如果您满足某些条件,您还可以将函数设置为“可移动”。。。i、 e:

if($url = \'mypage.php\') {  remove_action(\'wp_footer\'); }
5) 具有add_action 您可以让调试器插件读取您的函数,以检查该函数的执行时间、CPU使用情况等。。。

相关推荐

Use Post ID in functions.php

我的functions.php. 它工作得很好:当预订时,它会给我发电子邮件。易于理解的然而,我希望它能给我发送该预订的post ID,而不仅仅是“你好,世界!”消息帮助function add_to_system() { // get post meta // $email = get_post_meta(\'\',$post_id) // $post_id = get_queried_object_id(); mail(\'michael.mc