试图定制一个插件,我发现了一个使用add_action()
执行的函数。但是我在整个插件中寻找了do_action()
钩子。我找不到可以在没有钩子的情况下执行add_action()
中的函数吗?
答案 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' );