这是一个非常普遍的问题,我已经研究过了。也许我只是太傻了,但我不太明白什么时候可以用过滤器。在之前的一些混乱之后,似乎我可以接受核心文件中的任何函数,将其作为过滤器名称传递,第二个参数我可以用函数中我自己的函数替换它。php或插件文件。对吗?我真的可以修改任何这样做的东西吗?
我一直在尝试更改用户配置文件页面上的一些字段,这很糟糕,因为有些字段可以更改,有些字段不能更改,因为PHP和HTML不是来自我可以使用的函数或类-似乎某些事情只能通过对核心文件进行黑客攻击来更改,我不打算这样做!
所以,总而言之,谁能给我一个简短而甜蜜的解释,告诉我为什么以及何时使用动作或过滤器。这已成为我无法克服的障碍!非常感谢,丹。
更新:示例代码?
function get_stylesheet_directory() {
$stylesheet = get_stylesheet();
$theme_root = get_theme_root( $stylesheet );
$stylesheet_dir = "$theme_root/$stylesheet";
return apply_filters( \'stylesheet_directory\', $stylesheet_dir, $stylesheet, $theme_root );
}
SO网友:Milo
Filters 和Actions 在引擎盖下是相似的,但有一个重要的区别-
Actions 允许你在事件发生时做一些事情——WordPress做一些事情并执行一个动作,让你做你自己的事情。连接到动作的函数可能会也可能不会产生输出,但它永远不会return
s a值
Filters 允许您替换或修改某种数据。WordPress在函数中使用了一些数据,但在使用之前,它会对该值应用一个过滤器以允许您更改它。可以肯定地说,过滤器将return
某物
我可以接受核心文件中的任何函数,将其作为过滤器名称传递,第二个参数可以用函数中我自己的函数替换它。php或插件文件。
您不能随意选择一个函数名并向其添加一个过滤器,尽管正如您所发现的,这可能是因为WordPress方便地命名了许多动作,以匹配包含这些动作的函数名。
您只能在代码中包含对的调用的情况下添加筛选器apply_filters
挂在那个标签上。
您只能添加代码中包含调用的操作do_action
他被那个标签钩住了。