【问题标题】:Woocommerce How do I get price next each variationWoocommerce 如何获得每个变体的下一个价格
【发布时间】:2017-05-16 03:13:34
【问题描述】:

我正在使用最新的 WC,我真的希望价格显示在每个变体旁边,以便更好地了解。

我无法为我的 functions.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;

}

【问题讨论】:

  • 您能否链接到其他帖子并解释为什么它们不起作用?
  • stackoverflow.com/questions/32144111/… 这个没用。在实施一种或另一种方式后,我看不到任何变化。但它适用于旧版本的 WC,尽管我开始相信我的主题以某种方式阻止了它。我正在使用 Shopera。

标签: php wordpress variations


【解决方案1】:

由于没有 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 
}

结果

【讨论】:

  • 谢谢@Hemnath 你能把它原封不动地放到 funktions.php 中吗?
  • 我已经编辑了我的答案。您可以将该代码添加到您的functions.php
  • 太棒了!谢谢!不幸的是我的主题阻止了它,我的技能还不够好,无法真正理解为什么?任何想法?我在 istikbal.dk 上使用 Shopera。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 2020-03-05
  • 2018-12-06
  • 1970-01-01
  • 2018-08-12
  • 2016-08-11
相关资源
最近更新 更多