2017-07-15 21 views
1

製品ごとに変更されるURLだけである製品メタdemo_urlに接続されたカスタムボタンを製品ページに追加しました(各製品のライブデモを開くライトボックスに別々に)。コードは非常にシンプルです:特定のカテゴリのWooCommerce製品ページにカスタムボタンを表示する

function my_extra_button_on_product_page() { 
    global $product; 
    $demo_url = get_post_meta(get_the_ID(), 'demo_url', true); 
    echo '<a class="fancybox iframe" data-width="1280" data-height="720" href="'.$demo_url.'"><button style="background: lightblue; padding-left: 19px; padding-right: 19px;">Przymierz</button></a>'; 
} 

実際には、ライブデモ機能を使用していない他のいくつかの製品がショップにあります。彼らは別のカテゴリに記載されています。このボタンは、特定の商品カテゴリ(または2つの商品カテゴリには表示されません - より簡単なもの)のみ表示されるようにしたいと思います。

私はこれをget_cat_ID($ cat_name)で行うべきだと思いますが、if関数を書く方法は不明ですが、一般的に私はコーディングではとても慣れていません。このようなものが働く可能性はありますか?

if get_cat_ID($cat_name) = categoryname { 
    echo 'button code'; 
else 
    echo 'no button code'; 
endif 
} 

どうすればいいですか?

おかげ

答えて

0

あなたはそれをすべてあなたに必要な製品カテゴリで定義する、以下のフック機能とそれを達成することができます:

add_action('woocommerce_single_product_summary', 'custom_button_by_categories', 32 ,0); 
function custom_button_by_categories(){ 

    global $product; 

    // Define your categories in this array (can be Ids, slugs or names) 
    $product_cats = array('clothing', 'music', 'furnitures'); 

    if(has_term($product_cats, 'product_cat', $product->get_id())){ 
     $demo_url = get_post_meta($product->get_id(), 'demo_url', true); 
     echo '<a class="fancybox iframe" data-width="1280" data-height="720" href="'.$demo_url.'"><button style="background: lightblue; padding-left: 19px; padding-right: 19px;">Przymierz</button></a>'; 
    } 
} 

コードは、あなたのアクティブな子テーマのfunction.phpファイルになります(またはテーマ)または任意のプラグインファイルでも使用できます。

定義されたカテゴリのボタンの下にボタンが表示されます。テンプレートをカスタマイズする必要はありません。

あなただけのカスタムボタンを保つために(そのカテゴリに追加ツーカートボタンを削除したい場合は、あなたが条件で、この行を追加することができます。

remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30, 0); 

すべてのコードはWooCommerceでテストして動作しますバージョン3 +

関連する問題