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

在下拉列表中显示WooCommerce变化价格和库存状态

汤乐家
2023-03-14

我希望在变体下拉列表中显示每个woocommerce产品变体的价格和库存状态,如下所示:价格-变体名称-库存状态。

下面的代码给我的价格和变化名称在下拉列表中,但我不确定添加每个变化所需的额外代码当前库存状态?

// Add Variation Price to Drop Down

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 wp_kses( woocommerce_price( $_product->get_price() ), array() ). ' - ' . $term . '';
}
return $term;

}

提前感谢你所有的帮助。

共有2个答案

闻人梓
2023-03-14

如果有人想在变化下拉列表中添加带有自定义措辞的股票状态,以下是我根据Kashalo提供的答案使用的代码。

add_filter( 'woocommerce_variation_option_name','display_price_in_variation_option_name');

function display_price_in_variation_option_name( $term ) {
global $product;

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

$variation_id = $product->get_children();


foreach ( $variation_id as $id ) {
    $_product       = new WC_Product_Variation( $id );
    $variation_data = $_product->get_variation_attributes();
    $stock_status = $_product->get_stock_status();
    $stock_status = str_replace( array('instock','outofstock','onbackorder'), array('In Stock','Out of Stock','Please allow a few extra days for delivery'), $stock_status );

    foreach ( $variation_data as $key => $data ) {

        if ( $data == $term ) {
            $html  = wp_kses( woocommerce_price( $_product->get_price() ), array() );
            $html .= ' - ' . $term;
            $html .= ( $stock_status ) ? ' - ' . $stock_status : '';
            return $html;
        }
    }
}

return $term;

}
鲁品
2023-03-14

我已经通过删除自定义sql查询修改了您的函数,并使用WooCommerce内置函数来实现目标。

add_filter( 'woocommerce_variation_option_name','display_price_in_variation_option_name');

function display_price_in_variation_option_name( $term ) {
    global $product;

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

    $variation_id = $product->get_children();

    foreach ( $variation_id as $id ) {
        $_product       = new WC_Product_Variation( $id );
        $variation_data = $_product->get_variation_attributes();

        foreach ( $variation_data as $key => $data ) {

            if ( $data == $term ) {
                $html  = wp_kses( woocommerce_price( $_product->get_price() ), array() );
                $html .= ' - ' . $term;
                $html .= ( $_product->get_stock_quantity() ) ? ' - ' . $_product->get_stock_quantity() : '';
                return $html;
            }
        }
    }

    return $term;

}

注意:如果每个产品都有一个属性而不是一个属性的组合,则此功能将正常工作。

输出:

 类似资料:
  • 我正在使用Woocommerce和产品变体,我的所有变体都定义了默认变体。我想知道,我如何才能找到默认的变化和显示它的价格。 这是到目前为止我得到的代码,但它显示了最便宜的变体价格,我正在寻找我的默认变体产品价格。 } 我发现这里的代码示例显示默认的产品价格

  • 我想在Woocommerce产品页面上的变种下拉列表中显示每个产品变种的库存状态(例如,库存中/脱销)。我已经将相关函数复制到主题的functions.php文件中,并且可以编辑内容,但是不确定如何为每个变体提取所需的库存状态。 我可以取出整个产品的库存水平,但现在是每个变体的库存水平。 null

  • 问题内容: 我想在Woocommerce产品页面上的变体下拉列表中显示每个产品变体的库存状态(例如,库存/缺货)。我已经将相关功能复制到主题的functions.php文件中,并且可以编辑内容,但是不确定如何提取每种变体的所需库存状态。 我可以提取整个产品的库存水平,但是现在可以提取每个版本的库存水平。 任何帮助将不胜感激。 问题答案: 好的,首先,您需要获得以下产品变体: 在期权循环中,您需要遍

  • 我在我的WooCommerce 2.6.4商店上使用可变产品,我为同一产品的两种不同变体添加了不同的价格。当选择两个变体中的一个时,根本不显示任何价格。下面的div只是空的: 我希望预选的变异价格显示为默认,而非预选的变异价格应在选择时动态替换。几乎像这个演示,除了从一个预选的项目和价格应该显示为默认。

  • 我已经创建了这段代码,可以在网站上的任何页面上显示价格,这是由woocommerce控制的。 我想做的是修改代码,这样如果客户选择了一个变化的产品。然后价格变化以显示变化价格。例如,现在如果一个人选择了一种产品,在这种情况下是一个酊剂瓶,价格变化与瓶子的大小有关。在产品页面上,他们看到以下内容:- 产品(酊剂)30美元-50美元 从下拉菜单中,他们可以选择10mg瓶($30)、15mg瓶($40)