2017-01-01 7 views
4

私は最新のWCを使用しています。Woocommerce各バリエーションの次の価格を取得するには

function.phpに適切なコードが見つからないため、各バリエーションの横に価格が表示されます。私はいくつかの古い記事を見て、誰も本当に働いていませんでした。

私は次のことを試してみました:

add_filter('woocommerce_variation_option_name', 'display_price_in_variation_option_name'); 

function display_price_in_variation_option_name($term) { 
    global $wpdb, $product; 

    if (empty($term)) return $term; 
    if (empty($product->id)) return $term; 

    $result = $wpdb->get_col("SELECT slug FROM {$wpdb->prefix}terms WHERE name = '$term'"); 

    $term_slug = (!empty($result)) ? $result[0] : $term; 

    $query = "SELECT postmeta.post_id AS product_id 
       FROM {$wpdb->prefix}postmeta AS postmeta 
        LEFT JOIN {$wpdb->prefix}posts AS products ON (products.ID = postmeta.post_id) 
       WHERE postmeta.meta_key LIKE 'attribute_%' 
        AND postmeta.meta_value = '$term_slug' 
        AND products.post_parent = $product->id"; 

    $variation_id = $wpdb->get_col($query); 

    $parent = wp_get_post_parent_id($variation_id[0]); 

    if ($parent > 0) { 
     $_product = new WC_Product_Variation($variation_id[0]); 
     return $term . ' (' . wp_kses(woocommerce_price($_product->get_price()), array()) . ')'; 
    } 
    return $term; 

} 
+0

あなたは他の記事にリンクし、それらが機能しなかった理由を説明できますか? – MathSquared

+0

http://stackoverflow.com/questions/32144111/woocommerce-shows-price-on-both-variations?noredirect=1&lq=1 これは機能しませんでした。私は一方的な方法または他の方法を実装した後に変更を見ることができませんでした。しかし、WCの古いバージョンでは、私のテーマが何とかそれをブロックしていると信じていますが。私はShoperaを使っています。 –

答えて

0

何id引数woocommerce_variation_option_nameがないため、我々はスクリプトでこれを行うことができます。

add_action("wp_head", "function_to_woo_script"); 

function function_to_woo_script() { 
    ?> 
    <script> 
    $ = jQuery; 
    $(document).ready(function(){ 
     var json_product = jQuery.parseJSON($(".variations_form").attr("data-product_variations")); 
     var currency = "$"; 
     for(i = 0; i < json_product.length; i++) { 
      var attr_name = $(".variations select").attr("data-attribute_name"); 
      $(".variations select option[value='"+json_product[i].attributes[attr_name]+"']").html(json_product[i].attributes[attr_name] + " - " + currency + json_product[i].display_regular_price); 
     } 
    }); 
    </script> 
    <?php 
} 

結果

+0

ありがとう@Hemnathそれをそのままfunktions.phpに入れますか? –

+0

私は自分の答えを編集しました。そのコードをfunctions.phpに追加することができます –

+0

素晴らしい!ありがとうございました!不幸にも、私のテーマはそれを妨げており、私のスキルは本当に理由を理解するのに十分ではありませんか?何か案が? Istikbal.dkにShoperaを使っているIm。 –

関連する問題