Wie kann ich eine Variation aus dem Dropdown auf einer Produktseite ausblenden, sie aber dennoch über WooCommerce-URL-Coupons kaufen lassen?
Wenn ich die Variante nicht aktiv mache, wird sie im Drop-down-Menü ausgeblendet, aber ich erhalte im Warenkorb die Meldung „Dieses Produkt kann nicht gekauft werden“. Ich möchte es nur aus der Liste ausblenden, nicht vollständig deaktivieren.
Die folgende Lösung hat bei meinem Thema funktioniert, aber Sie führen Bootstrap aus, sodass möglicherweise Probleme auftreten.
Wir ändern die option
Tag der Optionen, die Sie mit ausblenden möchten hidden
Attribut. Nehmen Sie den folgenden Code und fügen Sie ihn Ihrem Design hinzu functions.php
oder ein benutzerdefiniertes Plugin:
Benutzerdefinierter Code
function custom_woocommerce_dropdown_variation_attribute_options_html( $html, $args )
{
$product = $args[ 'product' ];
$attribute = $args[ 'attribute' ];
$terms = wc_get_product_terms( $product->get_id(), $attribute, array( 'fields' => 'all' ) );
$options = $args[ 'options' ];
if ( empty( $options ) && !empty( $product ) && !empty( $attribute ) ) {
$attributes = $product->get_variation_attributes();
$options = $attributes[ $attribute ];
}
foreach ( $terms as $term ) {
if ( in_array( $term->slug, $options ) && ***SOME CONDITION***) {
$html = str_replace( '<option value="' . esc_attr( $term->slug ) . '" ', '<option hidden value="' . esc_attr( $term->slug ) . '" ', $html );
}
}
return $html;
}
add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'custom_woocommerce_dropdown_variation_attribute_options_html', 10, 2 );
Beachten Sie, dass einige Browser die nicht erkennen hidden
Attribut. Wenn Sie vollständige Cross-Browser-Kompatibilität wünschen, sollten Sie sich die Antworten unter How to hide a in a menu with CSS? ansehen. CSS-Eigenschaft hinzufügen style="display:none" kann auch mit einigen Browsern funktionieren.
Erweiterte benutzerdefinierte Felder
Jetzt habe ich in den obigen Code geschrieben ***SOME CONDITION***. Diese Bedingung muss prüfen, ob eine Option ausgeblendet werden soll oder nicht. Um diese Informationen hinzuzufügen, müssen wir ein benutzerdefiniertes Feld für das Attribut erstellen. Sie können dies manuell tun, aber ich mache es mit dem Advanced Custom Fields Plugin (ACF).
Erstellen Sie ein Produktattribut in Produkte->Attribute. Ja ankreuzen Archive aktivieren? und mach es Typ “Auswählen”. Fügen Sie dann die Attributbegriffe unter hinzu Bedingungen konfigurieren.<img decoding="async" src="https://i.stack.imgur.com/PDXwy.png" alt="Produktattribut bearbeiten" title="Bestimmte Variationen ausblenden 3"><img decoding="async" src="https://i.stack.imgur.com/ZshZc.png" alt="Produktattributbegriffe" title="Bestimmte Variationen ausblenden 4">
Installieren Erweiterte benutzerdefinierte Felder auf Ihr WordPress.
Erstellen Sie eine neue Feldgruppe.
Erstellen Sie in der Feldgruppe eine Regel zu Diese Feldgruppe anzeigen, wenn Taxonomy Term is equal to Product **your attribute**.
Erstellen Sie in der Feldgruppe ein Feld mit Feldbezeichnung=’versteckt’, Feldtyp=’True / False’ und stellen Sie die anderen Einstellungen nach Belieben ein.
Feldgruppe veröffentlichen/aktualisieren.
Gehen Sie zurück zu den Begriffen, die Sie ausblenden möchten, die Sie in Schritt 1 erstellt haben. Sie sollten ein Kontrollkästchen haben, um auszuwählen, ob das Attribut ausgeblendet werden soll oder nicht. Zutreffendes ankreuzen.<img decoding="async" src="https://i.stack.imgur.com/ZBpgd.png" alt="Begriff ausgeblendet Kontrollkästchen" title="Bestimmte Variationen ausblenden 5">
Erstellen Sie das variable Produkt mit Variationen, die sich aus den Produktattributen zusammensetzen.<img decoding="async" src="https://i.stack.imgur.com/U1v11.png" alt="Attribut zum Produkt hinzufügen" title="Bestimmte Variationen ausblenden 6"><img decoding="async" src="https://i.stack.imgur.com/s0B2N.png" alt="Variation hinzufügen" title="Bestimmte Variationen ausblenden 7">
Entfernen Sie im benutzerdefinierten Code ***SOME CONDITION*** und ersetzen Sie es durch get_field( 'hidden', $term ) ). Dies ist eine ACF-Funktion, die den Wert des ‘versteckten’ Feldes für die Seeschwalbe dieses Attributs erhält.
Schließlich sollten die Begriffe, die Sie als ausgeblendet markiert haben, nicht im Dropdown auf der Produktseite erscheinen. In meinem Beispiel sieht man grün fehlt in der Dropdown-Liste. <img decoding="async" src="https://i.stack.imgur.com/sxWbc.png" alt="Dropdown mit verstecktem Attribut" title="Bestimmte Variationen ausblenden 8">
Hallo, danke für diese ausführliche Antwort. Ich kann in 3 keine Produktattribute auswählen. Das ist keine solche Option.
– Virik
28. August 2017 um 7:40 Uhr
@Virik Erstellen Sie ein benutzerdefiniertes Produktattribut innerhalb des Produkts? Wenn ja, wird das nicht funktionieren. Im WordPress-Admin-Menü sollten Sie zu gehen Products->Attributes und erstellen Sie ein Attribut vom Typ auswählen. Verwenden Sie das dann, um Variationen im variablen Produkt vorzunehmen. Es sollte im Regelfeld „Erweiterte benutzerdefinierte Felder“ auswählbar sein.
– James Jones
28. August 2017 um 10:00 Uhr
Ich habe ein Attribut namens “avgang” hinzugefügt und einem Produkt basierend auf diesem Attribut eine Variation hinzugefügt, aber es gibt immer noch keine Option in ACF. Sie können hier einen Screenshot sehen: mementor.no/skisser/hidden-product.png
– Virik
28. August 2017 um 12:37 Uhr
@Virik Okay, ich habe etwas anderes gefunden, das ein Problem verursachen kann. Setzen Sie in den Optionen für das Attribut ein Häkchen bei ja Archive aktivieren – Aktivieren Sie dies, wenn Sie möchten, dass dieses Attribut Produktarchive in Ihrem Geschäft hat. Dadurch wird das Attribut „öffentlich“ und damit von ACF auswählbar.
– James Jones
28. August 2017 um 12:48 Uhr
Groß. Jetzt ist ACF richtig eingerichtet, aber es wird nicht in der Variante angezeigt: mementor.no/skisser/variation.png
– Virik
28. August 2017 um 13:16 Uhr
Ich bin ziemlich neu hier und im Umgang mit Code im Allgemeinen, aber ich habe CSS im Customizer verwendet, um eine Variante namens „Student:“ zu verbergen.
.postid-403 option[value=Student]{display: none;}
postid-403 identifiziert meine Produktseite. Das scheint zu funktionieren. Gibt es einen Grund, es nicht so zu machen?
Weil das Ausblenden von Optionen mit CSS nicht mit IE und vor allem Safari kompatibel ist. (Sie sollten Ihre versteckte Option auf einem Iphone sehen)
– Onur
6. Juni 2021 um 17:45 Uhr
Hilfreich224
Nicht hilfreich28
Hier ist ein Link zum Produkt. Vielen Dank. Attribute können von Produkt zu Produkt variieren. Wir möchten in der Lage sein, mehrere versteckte Attribute hinzuzufügen. natureventyr.no/vare-reisemal/egypt
– Virik
23. August 2017 um 13:21 Uhr
Das ist für uns keine gute Lösung. Die beste Lösung, wenn wir alle herunterladbaren Variablen aus der Dropdown-Liste ausblenden und diese Option für ausgeblendete Attribute verwenden könnten.
– Virik
23. August 2017 um 17:09 Uhr