满脑子想的都是添加过滤器

时间:2013-08-23 作者:Dan

这是一个非常普遍的问题,我已经研究过了。也许我只是太傻了,但我不太明白什么时候可以用过滤器。在之前的一些混乱之后,似乎我可以接受核心文件中的任何函数,将其作为过滤器名称传递,第二个参数我可以用函数中我自己的函数替换它。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 );
}

2 个回复
SO网友:Milo

FiltersActions 在引擎盖下是相似的,但有一个重要的区别-

Actions 允许你在事件发生时做一些事情——WordPress做一些事情并执行一个动作,让你做你自己的事情。连接到动作的函数可能会也可能不会产生输出,但它永远不会returns a值

Filters 允许您替换或修改某种数据。WordPress在函数中使用了一些数据,但在使用之前,它会对该值应用一个过滤器以允许您更改它。可以肯定地说,过滤器将return 某物

我可以接受核心文件中的任何函数,将其作为过滤器名称传递,第二个参数可以用函数中我自己的函数替换它。php或插件文件。

您不能随意选择一个函数名并向其添加一个过滤器,尽管正如您所发现的,这可能是因为WordPress方便地命名了许多动作,以匹配包含这些动作的函数名。

您只能在代码中包含对的调用的情况下添加筛选器apply_filters 挂在那个标签上。

您只能添加代码中包含调用的操作do_action他被那个标签钩住了。

SO网友:Pat J

我遵循的经验法则是:

使用add_filter() 当您想要修改将要输出(输出?)的某些文本时到用户屏幕。所以你可以过滤the_content, the_title, wp_title, 等等使用add_action() 当您想执行其他任务时,例如,echo()输入额外文本、修改全局变量、更改查询等。请注意filtersaction hooks, 虽然这是一个很好的起点,但远未完成。您可能希望在以下网站上搜索http://wpseek.com/ 如果你需要更深奥的东西。

结束

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。