Maison > développement back-end > tutoriel php > 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
Libérer: 2024-10-30 14:54:03
original
784 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal