2012-11-20 55 views
1

首先,我已閱讀「Override default php function」,名稱空間不滿足我的需要。我也研究過PHP.net's override_function(),但那也無法幫助我解決我的問題。我可以重寫在另一個文件/插件中調用的PHP函數嗎?

我使用稱爲Jigoshop的Wordpress插件作爲電子商務解決方案,但在某些情況下,我無法刪除我需要將自己的結構應用到「單個產品」頁面的操作。我不想編輯插件文件本身,因爲插件更新可能會取消並刪除以前的更改。實質上,我想通過我的/themes/mytheme/functions.php文件控制輸出。

有沒有人遇到過這種情況,原來的功能是包含在一個文件中,我不想爲同樣的「更新」原因編輯?

感謝

EDIT(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文件調用的_title_price_excerpt_meta_sharing & _add_to_cart喜歡叫jigoshop_template_single_summary

這些顯示的順序,我似乎無法改變。因此,我想基本上是重新定義function jigoshop_template_single_summary() {...}

+0

也許你可以對你的問題的具體闡述,因爲可替代解決方案,不涉及壓倒一切的。插件函數給出了什麼輸出以及如何修改它? – Jrod

+0

嗨@Jrod,請參閱上面的編輯。謝謝 – carmat

回答

0

我不知道這個插件非常好,但也許這就是你需要什麼Theming with Jigoshop

覆蓋在PHP(也是常見的。)有些功能是不是一個好主意。如果插件沒有提供鉤住它的功能有時更好地使用替代插件或重寫核心代碼..

+0

謝謝@Philipp。我一直在遵循Jigoshop的指示,但我幾乎希望定製標記更容易,所以我可以做到我想要的。我已經用更多信息更新了原始問題。不過謝謝。 – carmat

1

你可能想看看PECL擴展。它可以做你需要的,PHP.NET文檔。

runkit_function_redefine

(PECL runkit> = 0.7.0)

+0

runkit已基本死亡。沒有建立在PHP 5.2上的穩定版本,5.3版本或更高版本都沒有。 – duskwuff

+0

免責聲明,我沒有使用過,但...正式的runkit擴展現在託管在http://github.com/zenovich/runkit目前的主分支完全支持所有當代PHP版本,從4.4到5.3和5.4包含。 – Gary

+0

謝謝你們。問題是,我可以使用runkit函數做這樣的事嗎? 'runkit_function_redefine('original_function',$ args,'my_new_function');' 我也更新了一些更多的信息。乾杯 – carmat

相關問題