Heim >Backend-Entwicklung >PHP-Tutorial >Wie füge ich benutzerdefinierte Lagerstatus wie „Vorbestellung' und „Kontakt' zu WooCommerce-Produkten hinzu?

Wie füge ich benutzerdefinierte Lagerstatus wie „Vorbestellung' und „Kontakt' zu WooCommerce-Produkten hinzu?

Linda Hamilton
Linda HamiltonOriginal
2024-11-02 22:32:291083Durchsuche

How to Add Custom Stock Statuses like “Preorder” and “Contact Us” to WooCommerce Products?

So fügen Sie benutzerdefinierten Lagerstatus zu Produkten in WooCommerce 4 hinzu

Das Problem

Benutzerdefinierte Lagerstatus wie „Vorbestellung“ und „Kontaktieren Sie uns“. „,“ fehlen in den Produktoptionen in WooCommerce 4.

Die Lösung

Fügen Sie den folgenden Code zu Ihrer Datei „functions.php“ hinzu:

// Add new stock status options
add_filter( 'woocommerce_product_stock_status_options', 'filter_woocommerce_product_stock_status_options', 10, 1 );
function filter_woocommerce_product_stock_status_options( $status ) {
    $status['pre_order'] = __( 'Pre order', 'woocommerce' );
    $status['contact_us'] = __( 'Contact us', 'woocommerce' );
    return $status;
}

// Availability text
add_filter( 'woocommerce_get_availability_text', 'filter_woocommerce_get_availability_text', 10, 2 );
function filter_woocommerce_get_availability_text( $availability, $product ) {
    switch( $product->get_stock_status() ) {
        case 'pre_order':
            $availability = __( 'Pre order', 'woocommerce' );
        break;
        case 'contact_us':
            $availability = __( 'Contact us', 'woocommerce' );
        break;
    }
    return $availability; 
}

// Availability CSS class
add_filter( 'woocommerce_get_availability_class', 'filter_woocommerce_get_availability_class', 10, 2 );
function filter_woocommerce_get_availability_class( $class, $product ) {
    switch( $product->get_stock_status() ) {
        case 'pre_order':
            $class = 'pre-order';
        break;
        case 'contact_us':
            $class = 'contact-us';
        break;
    }
    return $class;
}

// Admin stock html
add_filter( 'woocommerce_admin_stock_html', 'filter_woocommerce_admin_stock_html', 10, 2 );
function filter_woocommerce_admin_stock_html( $stock_html, $product ) {
    switch( $product->get_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;
}

Zusätzliche Hinweise:

  • Diese Änderungen haben keine Auswirkungen auf bestehende Lagerstatus.
  • Die neuen Lagerstatus werden auf der Produktseite angezeigt einzelne Produktseite und die Admin-Produktlistentabelle.
  • Bei Bedarf können Sie die benutzerdefinierten Lagerstatus in Hooks verwenden, in denen Sie bereits Zugriff auf das $product-Objekt haben.

Das obige ist der detaillierte Inhalt vonWie füge ich benutzerdefinierte Lagerstatus wie „Vorbestellung' und „Kontakt' zu WooCommerce-Produkten hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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