答案 0 :(得分:1)
注意:该选项仅在只有一个下拉选择字段(因此变量产品中设置的变体有一个属性)时有效。通过多个属性(因此有多个下拉选择字段),它会显示一些错误,具体取决于存货状态属性条款组合。
以下代码将在唯一的下拉变化属性选项中显示变化价格和库存状态:
// Utility function to get the price or the stock status of a variation from it's attribute value
function get_variation_price_stock_string( $product, $name, $term_slug ){
foreach ( $product->get_available_variations() as $variation ){
if($variation['attributes'][$name] == $term_slug ){
$stock_status = $variation['is_in_stock'] == 1 ? __('In stock') : __('Out of stock');
return ' (' . strip_tags( $variation['price_html'] ) . ') ' . $stock_status;
}
}
}
// Add the price and stock status to the dropdown options items.
add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'show_stock_status_in_dropdown', 10, 2);
function show_stock_status_in_dropdown( $html, $args ) {
// Only if there is a unique variation attribute (one dropdown)
if( sizeof($args['product']->get_variation_attributes()) == 1 ) :
$options = $args['options'];
$product = $args['product'];
$attribute = $args['attribute'];
$name = $args['name'] ? $args['name'] : 'attribute_' . sanitize_title( $attribute );
$id = $args['id'] ? $args['id'] : sanitize_title( $attribute );
$class = $args['class'];
$show_option_none = $args['show_option_none'] ? true : false;
$show_option_none_text = $args['show_option_none'] ? $args['show_option_none'] : __( 'Choose an option', 'woocommerce' );
if ( empty( $options ) && ! empty( $product ) && ! empty( $attribute ) ) {
$attributes = $product->get_variation_attributes();
$options = $attributes[ $attribute ];
}
$html = '<select id="' . esc_attr( $id ) . '" class="' . esc_attr( $class ) . '" name="' . esc_attr( $name ) . '" data-attribute_name="attribute_' . esc_attr( sanitize_title( $attribute ) ) . '" data-show_option_none="' . ( $show_option_none ? 'yes' : 'no' ) . '">';
$html .= '<option value="">' . esc_html( $show_option_none_text ) . '</option>';
if ( ! empty( $options ) ) {
if ( $product && taxonomy_exists( $attribute ) ) {
$terms = wc_get_product_terms( $product->get_id(), $attribute, array( 'fields' => 'all' ) );
foreach ( $terms as $term ) {
if ( in_array( $term->slug, $options ) ) {
// Get the price and stock status
$price_stock_html = get_variation_price_stock_string( $product, $name, $term->slug );
// Insert the price and stock status
$html .= '<option value="' . esc_attr( $term->slug ) . '" ' . selected( sanitize_title( $args['selected'] ), $term->slug, false ) . '>' . esc_html( apply_filters( 'woocommerce_variation_option_name', $term->name ) . $price_stock_html ) . '</option>';
}
}
} else {
foreach ( $options as $option ) {
$selected = sanitize_title( $args['selected'] ) === $args['selected'] ? selected( $args['selected'], sanitize_title( $option ), false ) : selected( $args['selected'], $option, false );
// Get the price and stock status
$price_stock_html = get_variation_price_stock_string( $product, $name, $term->slug );
// Insert the price and stock status
$html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( apply_filters( 'woocommerce_variation_option_name', $option ) . $price_stock_html ) . '</option>';
}
}
}
$html .= '</select>';
endif;
return $html;
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试并可以正常工作。
基于:
答案 1 :(得分:0)
enter image description here price and stock status in dropdown
1:https://i。强文本 stack.imgur.com/yvBUH.jpg
非常感谢您的回复(非常快)。我使用Flatsome主题,效果很好。 另一个问题是: 是否有机会将“有库存”转换为“Verfügbar/有库存”,并且 脱销到“ Ausverkauft /脱销”中? 我们有来自德国和其他欧盟国家的客户;他们大多数都会明白。但是,如果我不能用德语说一些简短的话,我来自德国的老客户将面临问题。 再来一次;感谢您的工作。 ct