我可以覆盖在另一个文件/插件中调用的PHP函数吗?

时间:2012-11-20 17:32:09

标签: php wordpress wordpress-plugin customization jigoshop

首先,我读过“Override default php function”,命名空间无法满足我的需要。我也调查了PHP.net's override_function(),但这也无法解决我的问题。

我正在使用名为Jigoshop的Wordpress插件作为电子商务解决方案,但在某些情况下,我无法删除将自己的结构应用于“单一产品”页面所需的操作。我不想自己编辑插件文件,因为插件更新可能会否定并删除我以前的更改。基本上,我想通过/themes/mytheme/functions.php文件来控制输出。

之前是否有人遇到过此问题,原始功能包含在我不想为同一“更新”原因编辑的文件中?

由于

编辑(2012-11-21): 我的functions.php文件中有自定义函数,如下所示:

function prepare_jigoshop_wrappers() {
    remove_action('jigoshop_before_main_content', 'jigoshop_breadcrumb', 20);
    add_action('jigoshop_before_main_content', 'custom_jigoshop_breadcrumb', 10);
}
add_action('wp_head', 'prepare_jigoshop_wrappers');

这基本上允许我应用我自己的结构&组态。对于其他默认功能,这有点困难。例如,“数量选择器”,“添加到购物车”按钮和“库存可用性”都包含在jigoshop_template_single_summary文件中名为jigoshop_template_actions.php的函数中,该函数调用_title之类的内容, _price_excerpt_meta_sharing& _add_to_cart

这些显示的顺序,我似乎无法改变。因此,我想基本上重新定义function jigoshop_template_single_summary() {...}

2 个答案:

答案 0 :(得分:1)

您可能需要查看PECL扩展。它可以做你需要的,PHP.NET上的文档。

runkit_function_redefine

(PECL runkit> = 0.7.0)

答案 1 :(得分:0)

我不太了解这个插件,但这可能是你需要的Theming with Jigoshop

覆盖php中的一些函数(也是常见的......)从来都不是一个好主意。如果插件没有提供挂钩的功能,那么有时候使用替代插件或重写核心代码会更好。