Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich den Lagerstatus für einzelne Produktvarianten im Dropdown-Menü der WooCommerce-Produktseite anzeigen?

Wie kann ich den Lagerstatus für einzelne Produktvarianten im Dropdown-Menü der WooCommerce-Produktseite anzeigen?

DDD
Freigeben: 2024-10-29 14:27:02
Original
1087 Leute haben es durchsucht

How Can I Display the Stock Status for Individual Product Variations in the WooCommerce Product Page Dropdown?

So fügen Sie den Variationsbestandsstatus zum WooCommerce-Produktvariations-Dropdown hinzu

Problem:
Anzeige des Bestandsstatus für einzelne Produktvarianten im Variations-Dropdown auf der WooCommerce-Produktseite.

Lösung:

Um den Lagerstatus für jede Variation im Dropdown anzuzeigen, gehen Sie folgendermaßen vor:

add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'show_stock_status_in_dropdown', 10, 2);
function show_stock_status_in_dropdown( $html, $args ) {

    // Limiting to single attribute for variations (one dropdown)
    if( sizeof($args['product']->get_variation_attributes()) != 1 ) {
        return $html;
    }

    $options               = $args['options'];
    $product               = $args['product'];
    $attribute             = $args['attribute']; // The product attribute taxonomy
    $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 ) ) {
                    // Function to get stock status text
                    $stock_status = get_stock_status_text( $product, $name, $term->slug );
                    $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 ) . $stock_status ) . '</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 );
                // Function to get stock status text
                $stock_status = get_stock_status_text( $product, $name, $option );
                $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( apply_filters( 'woocommerce_variation_option_name', $option ) . $stock_status ) . '</option>';
            }
        }
    }
    $html .= '</select>';

    return $html;
}

function get_stock_status_text( $product, $name, $term_slug ){
    foreach ( $product->get_available_variations() as $variation ){
        if($variation['attributes'][$name] == $term_slug ) {
            $stock = $variation['is_in_stock'];
            break;
        }
    }
    return $stock == 1 ? ' - (In Stock)' : ' - (Out of Stock)';
}
Nach dem Login kopieren

Verwendung:

Kopieren Sie den Code in die Datei „functions.php“ Ihres aktiven untergeordneten Themes.

Hinweise:

  • Dieser Code geht davon aus, dass das Produkt nur ein Variationsattribut (ein Dropdown-Menü) hat.
  • Für mehrere Variationsattribute können zusätzliche Änderungen erforderlich sein.
  • Der Lagerbestand Der Text wird nach dem Variationsnamen hinzugefügt, durch einen Bindestrich getrennt und in Klammern eingeschlossen.

Das obige ist der detaillierte Inhalt vonWie kann ich den Lagerstatus für einzelne Produktvarianten im Dropdown-Menü der WooCommerce-Produktseite anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage