繁体   English   中英

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

[英]Can I override a PHP Function that is called in another file/plugin?

首先,我已阅读“ 覆盖默认的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_actions.php文件中名为jigoshop_template_single_summary的函数中,该函数调用jigoshop_template_single_summary_title_price_excerpt_meta_sharing_add_to_cart

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

您可能需要研究PECL扩展名。 它可以满足您的需要,PHP.NET上的文档。

runkit_function_redefine

(PECL Runkit> = 0.7.0)

我不太了解这个插件,但是可能这是您需要使用Jigoshop进行主题化的功能

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM