1

首先,我已经阅读了“覆盖默认 php 函数”并且命名空间不能满足我的需要。我也研究了PHP.net 的 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() {...}

4

2 回答 2

1

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

runkit_function_redefine

(PECL runkit >= 0.7.0)

于 2012-11-20T19:07:40.243 回答
0

我不太了解这个插件,但可能这就是你需要Jigoshop 的主题

重写 php 中的一些函数(也是常见的..)从来都不是一个好主意。如果插件没有提供一种方法来挂钩它的功能,有时最好使用替代插件或重写核心代码。

于 2012-11-20T17:38:28.243 回答