2016-09-26 10 views
2

WooCommerceでは、商品IDの配列のカートに追加ボタンを無効にしようとしていますが、問題が見つかりません。WooCommerceの商品IDの配列のためのカートに追加ボタンを無効にする

私は、この機能を使用しようとしています:

add_filter('woocommerce_is_purchasable', 'my_woocommerce_is_purchasable', 10, 2); 

function my_woocommerce_is_purchasable($is_purchasable, $product) { 
    $id=check(); // This function return an array of IDs 
    foreach ($id as $id_p){ 
     return ($product->id = $id_p ? false : $is_purchasable); 
    } 
} 

そして、これは私のcheck()機能コード(更新)です:

function check() { 
    $listproduit = get_woocommerce_product_list(); 
    $score = get_score_user(); 
    foreach ($listproduit as $products) { 
     if ($products[1] >= 5000) { 
      $listid = $products[0]; 
      return $listid; 
      // print_r($listid); 
     } 
    } 
    return $listid; 
} 

しかし、これは動作しません。

私は間違っていますか?

ありがとうございました

+1

'foreachの...' 'return'は私見意味をなさないインラインです。 'check()'関数から返された最初のエントリを比較し、$ id_pがfalseでない場合はfalseを返します。そうでなければ$ is_purchasableの値が返されます。それはあなたがやろうとしていることですか? – SaschaM78

+0

私はwoocommerce_is_purchasableの値を$ is_purchasable = falseで、チェック関数から返された商品IDの配列に適用したいと考えています。ありがとうございました----> – aminebj

答えて

3

あなたの条件に$ is_purchasableを含めるにはtrueまたはfalseを返す必要があります。すべてのプラグインファイルでも

add_filter('woocommerce_is_purchasable', 'my_woocommerce_is_purchasable', 10, 2); 
function my_woocommerce_is_purchasable($is_purchasable, $product) { 
    $id = check(); 
    if(in_array($product->id, $id) && $is_purchasable) return false; 
    else return true; 
} 

このコードは、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルに行くか:

は、このコードを試してみてください。

コードはテストされ、完全に機能します。


check()関数のコードで更新してください。私はこれをテストすることはできませんが、私はそれにいくつかの変更を加えました。ここで

はコード

function check() { 
    $listproduit = get_woocommerce_product_list(); 
    $listid = array(); 
    $score = get_score_user(); 
    foreach ($listproduit as $products) { 
     if ($products[1] >= 5000) { 
      $listid[] = $products[0]; 
     } 
    } 
    // print_r($listid); 
    return $listid; 
} 
+0

それはそれが働いていない製品の空白のページを与えている – aminebj

+0

function check(){ $ listproduit = get_woocommerce_product_list(); $ score = get_score_user(); foreach($ listproduit as $ products) { if($ products [1]> = 5000) { $ listid = $ products [0]; return $ listid; print_r($ listid); } } return $ listid; } – aminebj

+0

これは私がいくつかの製品に必要なものです。どうすればいいですか – aminebj

関連する問題