Das Hinzufügen von Postfix zur WooCommerce-Produktvariante wird überschrieben

Lesezeit: 3 Minuten

Benutzer-Avatar
Carl F. Corneil

Ich fange an zu erwarten, dass in WooCommerce eine “Aktualisierungsfunktion” integriert ist, mit der ich nur für kurze Zeit Variationen post_title umbenennen kann. Und dann wird es wieder zurückgesetzt, was die Hooks / WooCommerce entschieden haben?

Ich möchte Postfixes wie “(Cancelled)” programmatisch zu bestimmten Variationen hinzufügen.

$new_title = get_the_title( $variationid ) . ' (Cancelled)';
wp_update_post(array('ID' =>$variationid, 'post_title' => $new_title));

Das “hängt” nur eine Weile…

Ich habe versucht, diesen Hook zu deaktivieren und dann den Titel zu ändern, aber er wird trotzdem überschrieben.

add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_false' );

Gibt es eine Möglichkeit, WooCommerce dazu zu bringen, das Überschreiben von Variationstiteln zu stoppen?

Meine Lösung basiert auf der Antwort von @LoicTheAztec und verwendet eine Logik, die auf meinem benutzerdefinierten Beitragsstatus “storniert” basiert.

add_filter( 'woocommerce_product_variation_title', 'filter_product_variation_title_callback', 10, 4 );
function filter_product_variation_title_callback( $variation_title, $product, $title_base, $title_suffix ) {

    $id = $product->get_id();
    $status = get_post_status($id);
    if ($status == 'cancelled'){
        return $variation_title . ' (' . __("Cancelled", "woocommerce") . ')';
    } else {
        return $variation_title;
    }
}

Benutzer-Avatar
LoicTheAztec

Sie sollten es mit Dedicated versuchen woocommerce_product_variation_title Filter-Hook, der es ermöglicht, den Titel der Produktvariation vorübergehend zu ändern (bedingt)Hier entlang:

add_filter( 'woocommerce_product_variation_title', 'filter_product_variation_title_callback', 10, 4 );
function filter_product_variation_title_callback( $variation_title, $product, $title_base, $title_suffix ) {
    // Conditional custom field (example)
    if( $product->get_meta('_is_cancelled')  )
        $title_base .= ' (' . __("cancelled", "woocommerce") . ')';

    return $title_base
}

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Es sollte funktionieren.

Notiz: Das $variation_title gibt den Produkttitel inklusive Produktattribute zurück, der im obigen Funktionscode deaktiviert ist…


Auf Auftragsbearbeitungsseiten (wird auch gespiegelt):

Geben Sie hier die Bildbeschreibung ein

  • Nett! Ich habe einige geringfügige Änderungen vorgenommen, um meinen benutzerdefinierten Beitragsstatus zu verwenden. Während ich dich hier habe, Loic, wie spiegele ich diese Änderung auf der Seite “Bestellung bearbeiten” wider?

    – Carl F. Corneil

    13. März 2019 um 19:31 Uhr


  • @CarlF.Corneil Sie können das als Bearbeitung in Ihrer Frage hinzufügen, möglicherweise … Der andere Autor der Antwort hat gerade meinen Code in seine Antwort eingefügt, und das ist wirklich nicht der Weg.

    – LoicTheAztec

    13. März 2019 um 19:36 Uhr


  • @CarlF.Corneil Sie müssen auf Bestellbearbeitungsseiten abzielen … Oder ändert mein Code nicht den Bestellartikeltitel für die Produktvariationen auf Bestellbearbeitungsseiten?

    – LoicTheAztec

    13. März 2019 um 19:49 Uhr


  • Ok, danke für deine Hilfe bisher, ich werde mich darum kümmern.

    – Carl F. Corneil

    13. März 2019 um 21:16 Uhr

  • Ich glaube, ich habe es mit einigen Ihrer anderen Antworten herausgefunden, Loic. In Kombination mit einigen der Funktionen, die ich bereits geschrieben habe. foreach ( $order->get_items() as $item_id => $item ){ $item->set_name($item_name . ‘ (Abgebrochen)’); $item->save();} Hatte eine Weile mit dem save() -Teil zu kämpfen …

    – Carl F. Corneil

    13. März 2019 um 23:46 Uhr

Benutzer-Avatar
mujunur

Der Codeabschnitt in WooCommerce und seine Filter.

        $should_include_attributes = apply_filters( 'woocommerce_product_variation_title_include_attributes', $should_include_attributes, $product );
        $separator                 = apply_filters( 'woocommerce_product_variation_title_attributes_separator', ' - ', $product );
        $title_base                = get_post_field( 'post_title', $product->get_parent_id() );
        $title_suffix              = $should_include_attributes ? wc_get_formatted_variation( $product, true, false ) : '';

        return apply_filters( 'woocommerce_product_variation_title', $title_suffix ? $title_base . $separator . $title_suffix : $title_base, $product, $title_base, $title_suffix );




add_filter('woocommerce_product_variation_title', 'change_variation_title_temporary');

function change_variation_title_temporary($variation_title, $product, $title_base, $title_suffix) {

    return $title_base .  ' (Cancelled)';

} 

1246260cookie-checkDas Hinzufügen von Postfix zur WooCommerce-Produktvariante wird überschrieben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy