Heim > Artikel > Backend-Entwicklung > Wie füge ich benutzerdefinierte Lagerstatus zu WooCommerce-Produkten in WooCommerce 4 hinzu?
Benutzerdefinierter Lagerstatus für WooCommerce-Produkte in WooCommerce 4
Das Hinzufügen benutzerdefinierter Lagerstatus zu Produkten in WooCommerce 4 ist ein relativ einfacher Vorgang. Allerdings müssen bestimmte Funktionen geändert werden, um sicherzustellen, dass die Status im Frontend und Backend korrekt angezeigt werden.
Hinzufügen benutzerdefinierter Lagerstatus
Um benutzerdefinierte Lagerstatus hinzuzufügen, fügen Sie hinzu Fügen Sie Ihrer Datei „functions.php“ den folgenden Code hinzu:
<code class="php">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 );</code>
Dieser Code fügt zwei neue Status hinzu: „Vorbestellung“ und „Kontakt“.
Anzeige der benutzerdefinierten Lagerverfügbarkeit
Um sicherzustellen, dass die benutzerdefinierten Status im Frontend korrekt angezeigt werden, wenden Sie die folgenden Änderungen an:
<code class="php">// Availability text function filter_woocommerce_get_availability_text( $availability, $product ) { // Get stock status switch( $product->get_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 ); // Availability CSS class function filter_woocommerce_get_availability_class( $class, $product ) { // Get stock status switch( $product->get_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 );</code>
Anzeige des Lagerstatus in der Admin-Produktliste
Um benutzerdefinierte Lagerstatus in der Admin-Produktlistentabelle anzuzeigen, ändern Sie die folgende Funktion:
<code class="php">// Admin 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(); } } // 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>
Optional: Benutzerdefinierten Lagerstatus in Hooks verwenden
Sie können Verwenden Sie benutzerdefinierte Lagerstatus in Hooks, wenn Sie Zugriff auf das $product-Objekt haben oder globales $product verwenden können.
Hinweis:
Das obige ist der detaillierte Inhalt vonWie füge ich benutzerdefinierte Lagerstatus zu WooCommerce-Produkten in WooCommerce 4 hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!