在主题的函数中重写插件的可插入函数

时间:2018-09-30 作者:Edmund Chan

我偶然发现了这个片段-https://gist.github.com/mikejolley/1751128 - 这将创建一个与现有WC函数同名的函数,作为重写它的一种方法。

我还了解到,这种重写方式之所以有效,是因为原来的函数是“可插入的”,因为!function\\u exists()函数。

我的问题是,既然插件在主题之前加载,即WC会首先创建函数,那么覆盖函数的尝试是否应该失败,因为“if(!function\\u exists(\'woocommerce\\u template\\u loop\\u add\\u to\\u cart\')”条件不满足?

感谢您的任何意见!

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

定义其可插入功能的WooCommerce文件在加载主题之前不会加载。它通过将包含文件的函数挂接到after_setup_theme 挂钩:

add_action( \'after_setup_theme\', array( $this, \'include_template_functions\' ), 11 );
那是从/includes/class-woocommerce.php 在WooCommerce中归档。这个include_template_functions() 函数包括定义以下函数的文件woocommerce_template_loop_add_to_cart().

结束

相关推荐

如何在Pluggable.php中添加自定义函数

我正在开发一个WP插件,我想向pluggable添加一个自定义函数。php(位于/wp includes)。我正在从admin调用该函数。php(位于/wp admin)考虑一下功能auth_redirect 这是从admin调用的。php。auth_redirect 是在pluggable中定义的函数。php检查登录的用户,否则它会将他们重定向到登录页面。同样,我有自己的自定义函数。那么,是否有任何特定的钩子或过滤器,我必须使用它们来将我的函数附加到可插拔的。php。目前,我正在使用fwrite() 将