web-dev-qa-db-ja.com

Woocommerce:functions.phpの中核となる機能をオーバーライドするにはどうすればいいですか?

Functions.phpでwoocommerceのコア機能をオーバーライドする方法はありますか?

例えば、ファイルの場所は、wp-content/plugins/woocommerce/includes/class-wc-order-item-shipping.phpにあります。

次のような公共機能があります

public function set_method_title( $value ) {
  $this->set_prop( 'name',  wc_clean($value) );
  $this->set_prop( 'method_title',  wc_clean($value)  );
}

これに変更する方法:

public function set_method_title( $value ) {
  $this->set_prop( 'name',  $value );
  $this->set_prop( 'method_title',  $value  );
}
1
mysticalghoul

あなただけのプラグイン関数をあなた自身のコードで置き換えることはできません、except

  1. プラグインはfunction_exists()チェックでラップされています。これは関数pluggableを作ります。つまり、あなたが最初にそれを定義した場合、プラグインはそれを再び定義しようとしないでしょう、そしてあなたのものが使われるでしょう。この機能はプラグインできません。
  2. apply_filters()関数の使用によって示される、どこかに値を置き換えることを可能にするフィルタがあります。その値は関数の出力かもしれません、そしてフィルタを使うことによってあなたはあなた自身のもので出力を置き換えることができます。

あなたが特定する特定の機能はどちらも持っていないので、置き換えることはできません。 WooCommerceはおそらくこれらのプロパティにwc_clean()を適用するための非常に良い理由があると私は考えています、そしてそれがなければ期待通りに機能しないかもしれない、あるいはそれはセキュリティリスクをもたらすかもしれません。

3
Jacob Peattie

これらの機能を削除することはお勧めできません。データベースに入力するためのデータを準備しています。これらのエントリは単純なテキストしか受け付けないため、 wc_clean 関数はWordPress sanitize_text_field 関数を実行します。 WordPressドキュメンテーション のように、この関数:

  • 無効なUTF-8をチェックします
  • 単一の<文字をエンティティに変換します
  • すべてのタグを削除する改行、タブ、余分な空白を削除します
  • ストリップオクテット

それらを削除できたとしても、データベースに正しく保存されない可能性があります。潜在的に有害なコードが挿入される可能性があるため、攻撃の可能性もあります。データは保存する前に常にサニタイズする必要があります。また、データが切り捨てられないようにするため、データはテーブル列の設定と一致する必要があります。

3
Erica