2017-09-28 1 views
1

私が取り組んでいるウェブサイトには、価格を見るためにログインする必要があり、これを行うためにプラグインを使用しています。しかし、私はちょうどカーブのボールを投げて、ユーザーがログインしているかどうかにかかわらず、ウェブサイト上の特定のカテゴリには常に価格が表示されている必要があると言いました。WooCommerceの製品価格の可視性:特定のカテゴリの価格のみを戻す

プラグインは価格を削除する

remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); 

remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10); 

を使用するように見えます。

function make_surplus_price_always_visible(){ 

    global $post; 
    $terms = wp_get_post_terms($post->ID, 'product_cat'); 
    foreach ($terms as $term) $categories[] = $term->slug; 

    if (in_array('surplus-allison-parts', $categories) && !is_user_logged_in()) { 
     ?> 
      <script> 
      alert('product in surplus'); 
      </script> 
     <?php 

     //add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); 
     add_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10); 

    } 

} 
add_action('woocommerce_after_shop_loop_item_title', 'make_surplus_price_always_visible', 50); 

それが戻って価格を追加しません。そして、これは私が特定のカテゴリの製品のために価格を再度追加しようとしている方法です。 jQueryアラートは機能しているので、if文の要件を満たすことは問題ではありません。

特定のカテゴリの製品価格を戻すにはどうすればよいですか?更新

+0

だから基本的には、製品の価格を表示する必要が動作します。私はあなたの権利を得ていますか? –

+0

現在ログインしているユーザーのすべての価格が表示されます。ユーザーが特定のカテゴリに対してログアウトしている場合は、製品価格を表示する必要があります。厳しい部分は、プラグインによってログアウトされたユーザーのためにすべての価格が隠されていることです。 @AkshayShah –

答えて

1

:ここはそれを動作させるための正しい方法である:

  • は、製品カテゴリのhas_term() Wordpressの機能を使用することをお勧めして短くなっています。
  • あなたのjavascriptメッセージ(テスト目的でそこにあったもの)を削除しました。
  • フックの優先度は、動作するには10(価格のフック優先度)の直前である必要があります。

コード:

add_action('woocommerce_after_shop_loop_item_title', 'shop_loop_make_surplus_price_always_visible', 8); 
function shop_loop_make_surplus_price_always_visible(){ 
    global $post; 

    // Set here your product categories (Names, slugs or IDs) in this array 
    $categories = array('surplus-allison-parts'); 

    if (has_term($categories, 'product_cat', $post->ID) && ! is_user_logged_in()) { 
     add_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10); 
    } 
} 

そして:

add_action('woocommerce_single_product_summary', 'single_product_make_surplus_price_always_visible', 8); 
function single_product_make_surplus_price_always_visible(){ 
    global $post; 

    // Set here your product categories (Names, slugs or IDs) in this array 
    $categories = array('surplus-allison-parts'); 

    if (has_term($categories, 'product_cat', $post->ID) && ! is_user_logged_in()) { 
     add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); 
    } 
} 

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

が試験され、ユーザーが特定のカテゴリのためにログインしている場合

関連する問題