1

まず、「デフォルトの php 関数をオーバーライドする」を読みましたが、名前空間は私のニーズを満たしていません。PHP.netのoverride_function()も調べましたが、それも私の問題を解決することはできません。

Jigoshop という Wordpress プラグインを e コマース ソリューションとして使用していますが、「単一の商品」ページに独自の構造を適用するために必要なアクションを削除できない場合があります。プラグインの更新によって以前の変更が無効になり、削除される可能性があるため、プラグイン ファイル自体を編集したくありません。基本的に、ファイルを介して出力を制御したいと考えてい/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 ランキット >= 0.7.0)

于 2012-11-20T19:07:40.243 に答える
0

私はこのプラグインをよく知りませんが、おそらくこれはあなたが必要とするものです

php の一部の関数をオーバーライドする (これも一般的です) ことは、決して良い考えではありません。プラグインがその機能にフックする方法を提供しない場合は、別のプラグインを使用するか、コア コードを書き直す方がよい場合があります。

于 2012-11-20T17:38:28.243 に答える