Woocommerce Wordpressサイトをカスタマイズしています。
Woocommerce製品クラス(class-wc-product.php
)では、get_price
関数は次のようにフィルターを適用します。
function get_price() {
return apply_filters('woocommerce_get_price', $this->price, $this);
}
私のfunctions.phpに私は次のようにフィルタを追加したいです。
add_filter('woocommerce_get_price', 'custom_price');
function custom_price($price, $product) {
...
}
これを呼び出すと、次のようなPHP警告が表示されます。
Warning: Missing argument 2 for custom_price()
2番目の引数がないのはなぜですか? $this
はフィルタ呼び出しに送信されませんか?
あなたがadd_filter
呼び出しでそれを望んでいたことをWordPressに伝えなかったので、それは2番目の引数を欠いています。デフォルトでは、アクションとフィルタは1つの引数のみを取ります。これを試して:
<?php
add_filter('woocommerce_get_price', 'custom_price', 10, 2);
function custom_price($price, $product) {
...
}
この警告は、関数custom_price()の2番目の引数の結果です。フィルタは、呼び出し時に1つの変数のみを提供します。これが商品/投稿IDなのか価格なのかを思い出せません。コードドキュメントはそれが文字列を返すことを示しているので、私はそれが価格だと思います。
うまくいけば、 http://wcdocs.woothemes.com/apidocs/index.html にドキュメントがあります。
この時点で製品が必要な場合は、使用する必要があります。
function custom_price( $price ) {
global $product;
}
それ以外のすべてが失敗した場合は、単に$ priceをエコーして、それが製品IDなのか価格なのかを判断できるかどうかを確認します。その後、それに応じてコードを調整してください。