簡體   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