Maison >développement back-end >tutoriel php >Comment créer et utiliser des statuts de stock personnalisés dans WooCommerce 4 ?
Comment ajouter un statut de stock personnalisé aux produits dans WooCommerce 4
Arrière-plan
WooCommerce par La valeur par défaut fournit plusieurs statuts de stock, notamment En stock, En rupture de stock et En rupture de stock. Cependant, vous devrez peut-être créer des statuts de stock personnalisés pour répondre à vos besoins spécifiques en matière de gestion des stocks.
Création de statuts de stock personnalisés
Pour créer des statuts de stock personnalisés, utilisez le code suivant extrait dans le fichier function.php de votre thème ou dans un plugin personnalisé :
<code class="php">use WooCommerce\Admin\HTML; use WooCommerce\Utilities\Product;</code>
<code class="php">/** * Add custom stock status options. * * @param array $status Existing stock status options. * @return array Updated stock status options. */ function filter_woocommerce_product_stock_status_options( $status ) { // Add new statuses $status['pre_order'] = __( 'Pre order', 'woocommerce' ); $status['contact_us'] = __( 'Contact us', 'woocommerce' ); return $status; } add_filter( 'woocommerce_product_stock_status_options', 'filter_woocommerce_product_stock_status_options', 10, 1 ); /** * Modify availability text based on stock status. * * @param string $availability Availability text. * @param WC_Product $product Product object. * @return string Modified availability text. */ function filter_woocommerce_get_availability_text( $availability, $product ) { // Get stock status $product_stock_status = $product->get_stock_status(); // Modify availability text switch ( $product_stock_status ) { case 'pre_order': $availability = __( 'Pre order', 'woocommerce' ); break; case 'contact_us': $availability = __( 'Contact us', 'woocommerce' ); break; } return $availability; } add_filter( 'woocommerce_get_availability_text', 'filter_woocommerce_get_availability_text', 10, 2 ); /** * Modify availability CSS class based on stock status. * * @param string $class CSS class. * @param WC_Product $product Product object. * @return string Modified CSS class. */ function filter_woocommerce_get_availability_class( $class, $product ) { // Get stock status $product_stock_status = $product->get_stock_status(); // Modify CSS class switch ( $product_stock_status ) { case 'pre_order': $class = 'pre-order'; break; case 'contact_us': $class = 'contact-us'; break; } return $class; } add_filter( 'woocommerce_get_availability_class', 'filter_woocommerce_get_availability_class', 10, 2 ); // Admin side /** * Modify stock HTML on admin products list table. * * @param string $stock_html Stock HTML. * @param WC_Product $product Product object. * @return string Modified stock HTML. */ function filter_woocommerce_admin_stock_html( $stock_html, $product ) { // Simple if ( $product->is_type('simple') ) { // Get stock status $product_stock_status = $product->get_stock_status(); // Variable } elseif ( $product->is_type('variable') ) { foreach ( $product->get_visible_children() as $variation_id ) { // Get product $variation = wc_get_product( $variation_id ); // Get stock status $product_stock_status = $variation->get_stock_status(); /* Currently the status of the last variant in the loop will be displayed. So from here you need to add your own logic, depending on what you expect from your custom stock status. By default, for the existing statuses. The status displayed on the admin products list table for variable products is determined as: - Product should be in stock if a child is in stock. - Product should be out of stock if all children are out of stock. - Product should be on backorder if all children are on backorder. - Product should be on backorder if at least one child is on backorder and the rest are out of stock. */ } } // Stock status switch ( $product_stock_status ) { case 'pre_order': $stock_html = '<mark class="pre-order" style="background:transparent none;color:#33ccff;font-weight:700;line-height:1;">' . __( 'Pre order', 'woocommerce' ) . '</mark>'; break; case 'contact_us': $stock_html = '<mark class="contact-us" style="background:transparent none;color:#cc33ff;font-weight:700;line-height:1;">' . __( 'Contact us', 'woocommerce' ) . '</mark>'; break; } return $stock_html; } add_filter( 'woocommerce_admin_stock_html', 'filter_woocommerce_admin_stock_html', 10, 2 );</code>
Ajout au single Produits
Une fois que vous avez créé les statuts personnalisés, vous devez les ajouter à des produits individuels.
Affichage frontal
Les statuts de stock personnalisés seront apparaissent désormais sur le frontend de votre site, à la fois sur les pages produit uniques et sur le produit archives.
Dépannage
Si les statuts personnalisés n'apparaissent pas sur le frontend ou dans l'administrateur, assurez-vous que l'extrait de code est ajouté correctement à votre thème ou plugin. et que les filtres sont correctement nommés et accrochés.
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!