【问题标题】:Finding hooks Wordpress寻找钩子 Wordpress
【发布时间】:2015-12-03 14:57:38
【问题描述】:

我知道有一些 WordPress 的钩子列表,例如 --> http://adambrown.info/p/wp_hooks/hook

但是,如果我想为像 WC Vendors 这样的插件找到挂钩,那么他们网站上的挂钩列表要短得多。

“do_action”和“apply filter”函数是我们唯一可以修改的吗? 如果给定一个像 --> https://github.com/wcvendors/wcvendors/blob/master/classes/admin/class-product-meta.php#L10 这样的类,有没有办法修改它?

我们是否仅限于 do_action 钩子,还是有办法修改其他区域?我们也可以使用 WordPress 挂钩来挂钩 WC Vendors 插件吗?

【问题讨论】:

  • 您可以继承该类并覆盖它。您也可以覆盖模板并添加自己的钩子和过滤器。可以做很多事情。
  • 一旦我们继承了类,我们会将新文件保存到插件文件夹或子主题中,对吗?还要访问我们会使用指针之类的文件,而不是创建钩子?
  • 你可以创建钩子,当你从你的方法生成html时,你有机会创建一个钩子。

标签: wordpress hook


【解决方案1】:

大多数情况下,您应该尝试使用挂钩来完成任何任务,但是如果不实际修改实际代码,有些任务是不可能完成的。但是我们都知道修改核心代码不好,因为所有更改在更新后都会消失。因此,您可以扩展它,而不是修改一个类。您可以覆盖当前功能并添加新功能。扩展一个类就像在 functions.php 中使用一个相关的钩子一样简单,然后在同一个文件中扩展它或从另一个文件中请求它。这是官方tutorial 介绍如何向 woocommerce 运输类添加新的运输方式。

有时你甚至不需要所有的钩子,你只需要找到在特定页面上运行的那些。为此,您可以使用下面的代码列出所有当前的钩子。

$debug_tags = array();
add_action( 'all', function ( $tag ) {
    global $debug_tags;
    if ( in_array( $tag, $debug_tags ) ) {
        return;
    }
    echo "<pre>" . $tag . "</pre>";
    $debug_tags[] = $tag;
} );

或者您可以使用这个插件“simply show hooks”,它在开发过程中非常有用,因为它可以让您了解每个钩子在页面上的触发位置。

【讨论】:

  • “扩展一个类就像在functions.php中使用一个相关的钩子一样简单,然后在同一个文件中扩展它或者从另一个文件中需要它”......我们如何添加一个相关的钩子?通过在同一个文件中扩展它,你的意思是核心,正确的。它也可以添加到子主题中,对吧?
  • 我使用相关钩子的意思是,假设您要扩展结帐运输类,那么您应该首先创建一个新插件,然后您可以使用诸如 woocommerce_checkout_shipping 之类的钩子挂钩到父级类,但并不总是需要使用钩子。其次,我在同一个文件中扩展的意思是在同一个插件文件或函数文件中扩展它。您永远不应该对核心文件进行任何更改。
猜你喜欢
  • 2012-03-30
  • 2016-04-02
  • 2011-10-10
  • 1970-01-01
  • 2014-02-10
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多