这个问题可能是错误的,我不确定。因为我对此不清楚。

我知道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');


评论

当您调用do_action('custom');时会发生什么?在注册回调之后?并确保已加载jQuery。

我没有在后端或前端收到警报消息

jQuery已加载。当我用wp_head钩住相同的函数时,它工作正常,但不能与自定义
一起使用
Sun,我相信您最初的问题已经由toscho回答,您应该将此问题标记为已解决。您完成的#3和#4编辑属于一个新问题。

#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