Maison  >  Article  >  développement back-end  >  Comment afficher l'état du stock dans la liste déroulante des variantes WooCommerce pour les produits à attribut unique ?

Comment afficher l'état du stock dans la liste déroulante des variantes WooCommerce pour les produits à attribut unique ?

DDD
DDDoriginal
2024-10-30 14:54:03701parcourir

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

Comment améliorer l'état du stock de variantes dans la liste déroulante des variantes WooCommerce

Problème :

Lors de l'affichage des variantes de produits dans le produit WooCommerce Dans la liste déroulante de la page, l'état du stock (par exemple, En stock/En rupture de stock) pour chaque variante n'est pas facilement disponible.

Solution :

Fonction mise à jour pour un attribut unique Variations (introduites en 2021)

Remarque : Cette solution convient aux produits variables avec un seul attribut déroulant.

Modifiez la fonction 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>

Fonctionnalité supplémentaire : obtenez le texte de l'état du stock pour chaque variation

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

Utilisation :

Insérez les extraits de code ci-dessus dans le fichier Functions.php de votre thème ou dans un fichier plugin.

Limitations :

  • La solution fournie s'applique uniquement aux produits variables avec un attribut de liste déroulante.
  • Pour les produits avec plusieurs listes déroulantes. attributs, l'affichage de l'état du stock peut ne pas être précis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn