当前位置: 首页 > 知识库问答 >
问题:

从WooCommerce中的变异产品获取自定义域值和最大价格

姚伟
2023-03-14

我试图显示从x-x的变化自定义价格跨度。

    null
function change_product_price_display( $price) {
    $bulk_price = get_post_meta([ 'variation_id' ], 'bulk_price', true);
    $priceMax        = $product->get_variation_price('max'); // Max price

    //only show in archives 
    if (is_product_category()) {

        //only if there is a bulk price
        if ( $bulk_price ) {
            return ' <span class="price-suffix">' . ' From ' . get_woocommerce_currency_symbol() .__( $bulk_price , "woocommerce") . ' - ' . $priceMax   . '</span>';   
        }
    }
    //don't affect other products
    else {
        return $price;
    }   
}
add_filter( 'woocommerce_get_price_html', 'change_product_price_display');
add_filter( 'woocommerce_cart_item_price', 'change_product_price_display');

共有1个答案

滕项明
2023-03-14

在产品类别存档中显示最低值(自定义域)至最高价格。在代码中添加解释的注释

// Display on product category archive lowest value to max price
function change_product_price_display( $price, $product ) {
    // Returns true when viewing a product category archive.
    if ( is_product_category() ) {
        // Set array
        $bulk_prices = array();

        // Loop for variations IDs
        foreach( $product->get_children() as $variation_id ) {
            // Get post meta
            $bulk_price = get_post_meta($variation_id, 'bulk_price', true);

            // True
            if( $bulk_price ) {
                // Push
                $bulk_prices[] = $bulk_price;   
            }
        }

        // NOT empty
        if( sizeof($bulk_prices) > 0 ) {
            // Sort: low to high
            sort($bulk_prices);

            // First value
            $lowest_value = reset( $bulk_prices );

            // Get max price
            $price_max = $product->get_variation_price('max');

            // Output
            $price = '<span class="price-suffix">From ' . get_woocommerce_currency_symbol() . $lowest_value . ' - ' . wc_price($price_max) . '</span>';
        }
    }

    return $price;
}
add_filter( 'woocommerce_variable_price_html', 'change_product_price_display', 10, 2 );

为清晰起见,创建和保存自定义域的代码

// Add custom field input product variations
function action_woocommerce_variation_options_pricing( $loop, $variation_data, $variation ) {  
    woocommerce_wp_text_input( array(
        'id'          => 'bulk_price[' . $loop . ']',
        'desc_tip'    => 'true',
        'description' => __( 'Enter the Bulk price here.', 'woocommerce' ),
        'label'       => __( 'Custom Field', 'woocommerce' ),
        'value'       => get_post_meta( $variation->ID, 'bulk_price', true )
    ));
}
add_action( 'woocommerce_variation_options_pricing', 'action_woocommerce_variation_options_pricing', 10, 3 );

// Save custom field on product variation save
function action_woocommerce_save_product_variation( $variation_id, $i ) {
    $bulk_price = $_POST['bulk_price'][$i];
    if ( isset( $bulk_price ) ) {
        update_post_meta( $variation_id, 'bulk_price', esc_attr( $bulk_price ) );
    }
}
add_action( 'woocommerce_save_product_variation', 'action_woocommerce_save_product_variation', 10, 2 );
 类似资料:
  • 我不只是想用钩子添加所有的自定义元数据,因为我需要对输出进行非常严格的控制。例如,对于在购物车页面中包含自定义域,下面的答案可以很好地工作:在Woocommerce购物车中显示自定义域的值&Checkout items 但我也希望它们出现在结帐、订单详细信息和电子邮件中,并完全控制它们出现的HTML(在某些情况下,它们也需要转换,例如,Unix时间戳转换为人类可读的时间)。 在模板中,我尝试了以下

  • 我试图在变体下拉列表中显示产品变体价格。我试图改变默认的行为,当你在下拉列表中选择一个变量时,价格显示在div中。 问题是我找不到那个部门的变动价格。我搜索了所有的javascript,但找不到它 如果我使用: 我只得到所有选项的最小变化价格。我想知道每种变体的价格。有线索吗?

  • 当我进入产品编辑页面时,有一个选项卡“属性”。在那里我可以设置属性名及其值。 我假设这就是在Woocommerce上为产品添加自定义属性的方式。 但是如何在循环中得到这个值呢? 我看到人们使用,但它希望我传递分类法和另一个参数数组。分类学是什么?我没有手动添加。论点是什么?

  • 我试图在woocommerce中获得一个特定的自定义属性。我在这个网站上读了很多文章,其中提供了3-5种方法。在尝试了所有方法之后,对我来说唯一有效的方法就是循环所有属性——所有其他属性都不起作用。我有一个名为“pdfs”的自定义属性 以下尝试不起作用:(链接) 这是唯一的一个工作:(链接) 我更希望能够使用第一个选项之一。任何帮助都将不胜感激。谢谢

  • 我正在我的WooCommerce网店上为我的产品制作一个自定义附加组件。一切正常,但我只需要一件事。当客户选中产品页面上的复选框时,必须将$30添加到所选变体的原始价格中。 这部分:检查复选框是否被选中。 我的问题就在这里: 的值仅为0。 因此,我试图找出如何获得所选变体的价格。 我尝试了和,但没有任何运气... 更新我已经尝试从这个线程实现代码。有了这些代码,我可以得到所选变体的价格,但我不能再