2016-04-24 13 views
4

私はカスタムWooComerce製品タイプを持っており、その中からカートのURLにアクセスする必要があります。WooCommerceは製品クラスからカートにアクセスできない

は十分に単純に見えるでしょう:

class WC_Product_My_Product extends WC_Product_Simple { 

public function some_method() { 
    global $woocommerce; 
    $href = $woocommerce->cart->get_cart_url();  
} 
} 

しかし:

Fatal error: Call to a member function get_cart_url() on a non-object 

possibily間違っている可能性がありますか?

$woocommerce変数はカスタム製品クラスを定義するときに使用できませんか?

もしそうなら、それにアクセスするための内部メソッド/変数がありますか?新しいオブジェクトのインスタンスを作成するために$woocommerce->cart = new WC_Cart();を使用し

答えて

3

Updated for WC 3+

エラーを回避するために、明らかなソリューションです(詳しくは、またはカート?):

class WC_Product_My_Product extends WC_Product_Simple { 

    public function some_method() { 
     WC()->cart = new WC_Cart(); 
     $href = WC()->cart->get_cart_url();  
    } 
} 
+0

ありがとう、これはどちらか動作しませんでしたが、私はより良いコンテキストを提供するためのコードをいくつか追加しました。私はそれをカスタム製品タイプのクラス内のメソッドで呼びます – DavidTonarini

+1

@DavidTonarini可能であれば、完全なソリューションで質問を編集できますか?他の人がこれに遭遇した場合、あなたは何をしたのか分かりますか?ありがとう! – Shawn

+1

@Shawn確かに、私は可能ですが、受け入れられた答えにはすでにすべてのコードが含まれています。そのような場合には、答えはすでにコードを持っているので、それをそのまま残すのが標準的な習慣だと思いますか?そうでない場合、私は質問 – DavidTonarini

関連する問題