我们可以执行没有do_action钩子的add_action函数吗

时间:2019-03-25 12:55:06

标签: wordpress hook

试图定制一个插件,我发现了一个使用add_action()执行的函数。但是我在整个插件中寻找了do_action()钩子。我找不到可以在没有钩子的情况下执行add_action()中的函数吗?

2 个答案:

答案 0 :(得分:1)

最终,这些动作只是可调用的,并且可以通过多种方式调用。若要查找在何处调用该操作,请获取堆栈跟踪,然后将其打印在某处。像

function my_the_content_filter($content) {
  return '<pre>' . print_r(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS),true) . '</pre>' . $content;
}

add_filter( 'the_content', 'my_the_content_filter' );

除了在您的情况下,backtrace调用将进入该插件的修改后的副本中,并在其代码中包含您想进一步了解的现有操作。另外,根据您的情况,您可能需要打印到文件,或使用WordPress的调试日志,而不是添加到页面内容。

答案 1 :(得分:0)

add_action()的第二个参数实际上是被调用的函数名称。

喜欢

add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );

也可以由echo woocommerce_template_single_title()

调用

如果您编写do_action('woocommerce_single_product_summary'),则将获得该动作附带的所有功能。

像这样

add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_rating', 10 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_sharing', 50 );

将全部通过写do_action( 'woocommerce_single_product_summary' );

来调用