我希望我理解正确,因为你的问题有点混乱
背景
功能就像你的汽车一样,在投入使用之前都是无用的东西。仅在中定义
functions.php
或者,在一个插件中,它的功能就像停放在车库中的汽车一样有用,但在给定的时间点上却没有做任何有用的事情。
这就是操作和过滤器的用武之地。您的功能可以连接到一些过滤器或操作,在这些过滤器或操作中,它可以执行给定的任务,使其变得有用,就像现在开车上班一样,它成为了一个有用的对象。(函数也可以直接调用到模板中以使其有用)
挂钩有特定的任务
过滤器用于更改作为连接到过滤器的回调函数中的第一个参数传递的变量的值
假定操作执行回调函数指定的某种职责,这可以是属于该操作范围的任何操作,例如重定向到另一个页面或更改WP_Query
班
挂钩不仅被core使用,也被插件和主题使用。在任何场景中,任何钩子的主要目的都是使某些内容动态且可编辑,而不必直接修改给定的文件。主题、插件或核心可以由自定义插件更改,而无需直接更改任何代码。当涉及到更新核心、主题和插件时,这当然有巨大的好处
主题级过滤器和操作
要直接回答您的问题,您需要查看以下内容,您是否正在创建主题
为你自己
公共用途
如果您正在为自己创建一个主题,并且不打算公开发布,则可以不使用自定义过滤器和操作。
您可以将值设置为所需的静态值,而不是使用过滤器过滤函数或变量的返回值。另一方面do_action()
在模板中调用,您可以在需要的地方调用函数。因此,不要在模板中执行以下操作
do_action( \'some_action\' );
然后在函数中
add_action( \'some_action\', \'some_function\' );
function some_function()
{
echo \'Some custom text\';
}
您只需在函数中执行以下操作
function some_function()
{
echo \'Some custom text\';
}
然后直接在模板中调用该函数
some_function();
尽管您不打算公开发布主题,但使用自定义过滤器和操作仍然非常有用
如果您打算公开发布一个主题,那么您可以通过使用do_action()
调用,以便它们取消钩住您的函数,然后将自己的函数挂接到操作。
注意,为了方便起见,我们都倾向于使用闭包,但它们有一个巨大的缺点,即它们几乎是不可移动的,因为匿名函数没有回调名称。对于将公开发布的主题,如果您不希望某些内容是可移动的,那么应该避免使用闭包。而不是做
add_action( \'some_action\', function ()
{
echo \'Some value\'
}):
宁愿这样做
add_action( \'some_action\', \'some_function\' );
function some_function()
{
echo \'Some value\';
}
现在可以删除子主题或插件
some_function()
从与的操作
remove_action()
然后将自己的自定义函数插入/挂接到
some_action
行动电话。使用闭包时无法执行此操作