Heim > Backend-Entwicklung > PHP-Tutorial > Wie füge ich benutzerdefinierte Lagerstatus zu WooCommerce-Produkten in WooCommerce 4 hinzu?

Wie füge ich benutzerdefinierte Lagerstatus zu WooCommerce-Produkten in WooCommerce 4 hinzu?

Susan Sarandon
Freigeben: 2024-11-03 14:59:02
Original
679 Leute haben es durchsucht

How to Add Custom Stock Statuses to WooCommerce Products in WooCommerce 4 ?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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=&quot;pre-order&quot; style=&quot;background:transparent none;color:#33ccff;font-weight:700;line-height:1;&quot;>' . __( 'Pre order', 'woocommerce' ) . '</mark>';
            break;
        case 'contact_us':
            $stock_html = '<mark class=&quot;contact-us&quot; style=&quot;background:transparent none;color:#cc33ff;font-weight:700;line-height:1;&quot;>' . __( 'Contact us', 'woocommerce' ) . '</mark>';
            break;
    }

    return $stock_html;
}
add_filter( 'woocommerce_admin_stock_html', 'filter_woocommerce_admin_stock_html', 10, 2 );</code>
Nach dem Login kopieren

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:

  • Verwenden Sie globales $product, wenn Sie haben keinen Zugriff auf das $product-Objekt, wie zum Beispiel in den Hooks woocommerce_shop_loop_item_title und woocommerce_single_product_summary.
  • Greifen Sie auf das $product-Objekt zu, wenn es standardmäßig an die Callback-Funktion übergeben wird, wie im woocommerce_get_price_html-Hook.

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage