Heim >Backend-Entwicklung >PHP-Tutorial >Wie zeige ich den Lagerstatus im WooCommerce-Variations-Dropdown für Produkte mit einem Attribut an?

Wie zeige ich den Lagerstatus im WooCommerce-Variations-Dropdown für Produkte mit einem Attribut an?

DDD
DDDOriginal
2024-10-30 14:54:03776Durchsuche

How to Display Stock Status in WooCommerce Variation Dropdown for Single-Attribute Products?

So verbessern Sie den Variationsbestandsstatus im Variations-Dropdown-Menü von WooCommerce

Problem:

Bei der Anzeige von Produktvariationen im WooCommerce-Produkt Im Dropdown-Menü der Seite ist der Lagerstatus (z. B. „Auf Lager“/„Nicht vorrätig“) für jede Variante nicht sofort verfügbar.

Lösung:

Aktualisierte Funktion für Einzelattribute Variationen (eingeführt im Jahr 2021)

Hinweis: Diese Lösung eignet sich für variable Produkte mit nur einem Dropdown-Attribut.

Ändern Sie die Funktion wc_dropdown_variation_attribute_options:

<code class="php">add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'show_stock_status_in_dropdown', 10, 2);
function show_stock_status_in_dropdown( $html, $args ) {
    // Ensure there's only one variation attribute
    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 );
        $show_option_none = $args['show_option_none'] ? true : false;

        if ( ! empty( $options ) ) {
            $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>';

            foreach ( $options as $option ) {
                $stock_status = get_stock_status_text( $product, $name, $option );
                $html .= '<option value="' . esc_attr( $option ) . '" ' . selected( sanitize_title( $args['selected'] ), $option, false ) . '>' . esc_html( apply_filters( 'woocommerce_variation_option_name', $option ) . $stock_status ) . '</option>';
            }
            $html .= '</select>';
        }
    }
    return $html;
}</code>

Zusätzliche Funktionalität: Lagerstatustext für jede Variante abrufen

<code class="php">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)';
}</code>

Verwendung:

Fügen Sie die oben genannten Codeausschnitte in die Datei „functions.php“ Ihres Themes ein oder a Plugin-Datei.

Einschränkungen:

  • Die bereitgestellte Lösung gilt nur für variable Produkte mit einem Dropdown-Attribut.
  • Für Produkte mit mehreren Dropdown-Attributen Attribute enthalten, ist die Anzeige des Lagerbestands möglicherweise nicht genau.

Das obige ist der detaillierte Inhalt vonWie zeige ich den Lagerstatus im WooCommerce-Variations-Dropdown für Produkte mit einem Attribut an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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