我知道
add_action
,它用于将我们的函数挂接到指定的函数。例如,现在add_action('wp_head'.'myfunc');
中的所有代码都将在myfunc
中执行。这很明显,但是我对wp_head()
的功能有疑问吗?任何人都可以通过简单的示例为我提供一个简单易懂的答案。我不想去那里,因为首先我想澄清这个问题,然后我将搬到那里。有人可以帮助我吗? />
function custom_register()
{
echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';
}
do_action('custom');
add_action('custom','custom_register');
我在插件中尝试过此操作,但没有收到警告消息。工作正常
/******************working****************/
add_action('wp_head','custom_register');
#1 楼
使用do_action( 'unique_name' )
创建您自己的操作。您可以使用它为插件提供API,以便其他插件可以为您的自定义操作注册回调。示例:我需要在插件中调用do_action吗?
但是您也可以在主题中使用自定义操作(或过滤器)。示例:将自定义部分实现为WordPress主题的最佳实践方法
,您可以将两者组合在一起以使插件和主题一起工作。示例:如何使主题中的插件提供方法?
摘要:
add_action( 'foo' )
注册了一个回调,do_action( 'foo' )
执行了该注册的回调。评论
感谢您提供的帮助,这主要是为了API。我尝试了一个样本,但没有成功,您可以在那找到任何问题吗?检查我的编辑@toscho
–太阳
13-10-28在11:07
我们可以说这是继承的另一种情况吗?在扩展和覆盖类方面,我们正以这种方式进行。这个对吗?
–太阳
13-10-28在12:11
@sun Hm,是的,但是您可以将两种方法结合使用,它们并不互相排斥。
– fuxia♦
13-10-28在12:19
#2 楼
这是我的猜测,因此,如果您知道的更多,请发表评论,以便我更新我的猜测。 。当您使用wp_head()
时,您在告诉PHP当(将来)调用add_action('wp_head','custom_register')
时,还要调用do_action('wp_head')
。您对custom_register()
的调用也是如此,但是正如您在代码中所看到的那样,对add_action('custom','custom_register')
的调用已经完成,并且在被调用时,还没有添加任何操作。这是为什么Toscho问注册回调后调用
do_action('custom')
会发生什么情况。您关于后端和前端的答案是模棱两可的。如果您交换以下代码中的最后两行,我认为它会起作用:function custom_register()
{
echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';
}
do_action('custom'); // This is called before it will have an effect.
add_action('custom','custom_register'); // Too late - do_action was already called.
#3 楼
do_action
:注册动作钩子,而add_action
:向已注册的钩子添加回调函数。 。 您将通过
index.php
在模板文件<?php add_action('bp_sidebar_left'); ?>
中添加一个动作钩子。 functions.php
#4 楼
您必须像下面这样使用:function custom_register()
{
echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';
}
.
add_action('custom','custom_register'); // Too late - do_action was already called.
do_action('custom'); // This is called before it will have an effect
评论
它为我工作
–user112289
17年2月1日在16:16
评论
当您调用do_action('custom');时会发生什么?在注册回调之后?并确保已加载jQuery。我没有在后端或前端收到警报消息
jQuery已加载。当我用wp_head钩住相同的函数时,它工作正常,但不能与自定义
一起使用
Sun,我相信您最初的问题已经由toscho回答,您应该将此问题标记为已解决。您完成的#3和#4编辑属于一个新问题。