it-swarm.dev

Ist es möglich, einem WooCommerce-Attributbegriff benutzerdefinierte Felder hinzuzufügen?

Ist es auf Wordpress / WooCommerce möglich, benutzerdefinierte Felder zu einem WooCommerce-Attributbegriff hinzuzufügen?

Mit "Attributen" meine ich die allgemeinen Attribute und nicht die Attribute unter Produkten.

Bitte überprüfen Sie das Bild unten für weitere Details:

 enter image description here 

Kann man das mit dem ACF (Advanced Custom Fields) Plugin machen?

Vielen Dank!

3
David Smith

Ja, es ist möglich. Und es gibt eine einfache Anleitung hier .

Unten finden Sie einen Arbeitscode, den Sie zur Hauptdatei functions.php des Themas hinzufügen können:

// Adds a custom rule type.
add_filter( 'acf/location/rule_types', function( $choices ){
    $choices[ __("Other",'acf') ]['wc_prod_attr'] = 'WC Product Attribute';
    return $choices;
} );

// Adds custom rule values.
add_filter( 'acf/location/rule_values/wc_prod_attr', function( $choices ){
    foreach ( wc_get_attribute_taxonomies() as $attr ) {
        $pa_name = wc_attribute_taxonomy_name( $attr->attribute_name );
        $choices[ $pa_name ] = $attr->attribute_label;
    }
    return $choices;
} );

// Matching the custom rule.
add_filter( 'acf/location/rule_match/wc_prod_attr', function( $match, $rule, $options ){
    if ( isset( $options['taxonomy'] ) ) {
        if ( '==' === $rule['operator'] ) {
            $match = $rule['value'] === $options['taxonomy'];
        } elseif ( '!=' === $rule['operator'] ) {
            $match = $rule['value'] !== $options['taxonomy'];
        }
    }
    return $match;
}, 10, 3 );

Auf dem ACF-Bildschirm zum Erstellen/Bearbeiten von Feldgruppen erhalten Sie Folgendes:

enter image description here


AKTUALISIERT 25. September 2018 (UTC)

In der Funktion zum Abgleichen der Regel auf der Termbearbeitungsseite wurde der $options['ef_taxonomy'] in $options['taxonomy'] geändert - damals existierte der Arrayschlüssel taxonomy nicht (in meinem Fall) und er existiert jetzt, was meiner Meinung nach den ef_taxonomy-Schlüssel ersetzt . Vielen Dank an @JordanCarter für die Kenntnisnahme des Schlüssels und @VadimH für die Bearbeitung der ersten Antwort. =)

In dieser Funktion habe ich auch die if ( isset( $options['taxonomy'] ) )-Prüfung hinzugefügt, um die "undefinierte" Notiz von PHP zu vermeiden. Vielen Dank an @JordanCarter, dass Sie dies bemerkt haben.

@VadimH, Sie können get_field( '{NAME}', 'term_{TERM ID}' ) verwenden, um den Feldwert wie folgt abzurufen (und anzuzeigen):

$term_id = 123;
$value = get_field( 'my_field', 'term_' . $term_id );

Weitere Informationen finden Sie im Abschnitt " Wert aus verschiedenen Objekten abrufen " im offiziellen Dokumentation der get_field().

PS: Der gesamte Code (nicht nur die get_field()) wurde zuletzt unter ACF 5.7.6 und ACF PRO 5.7.3 mit WooCommerce 3.4.5 getestet.

6
Sally CJ