web-dev-qa-db-de.com

woocommerce bekommt Attributbegriffe

In Woocommerce können Sie globale Produktattribute und Begriffe hinzufügen. So zum Beispiel:

Size (attribute)
small  (term)
medium (term)
large  (term)

Dies ist produktunabhängig. Sie können dann aus den vordefinierten Attributen eines Produkts auswählen.

Ich muss alle Ausdrücke in einem Attribut mit PHP erhalten. Wählen Sie das gewünschte Attribut aus, z. B. size, und geben Sie dann ein Array mit [small,medium,large] zurück.

Das scheint einfach zu sein, aber ich kann keine Hilfe finden.

14
phantomdentist

Etwas verwirrend, vor allem beim Durchsehen der WooCommerce-Dokumente, da absolut keine Erwähnung der Liste der Begriffe/Attribute erwähnt wird.

Die Attribute werden als benutzerdefinierte Taxonomie gespeichert, und die Begriffe sind Taxonomiebedingungen. Das bedeutet, dass Sie native Wordpress-Funktionen verwenden können: Wordpress get_terms () Funktionsreferenz

Wenn Sie in WooCommerce auf ein Attribut klicken, können Sie in der URL nachsehen und sehen, dass ihnen "pa_" vorangestellt ist.

Das ist wahrscheinlich was Sie brauchen:

$terms = get_terms("pa_size");
foreach ( $terms as $term ) {
echo "<option>" . $term->name . "</option>";
}
23
Mike Szostech

Ich wollte in der Lage sein, alle verschiedenen Attribute aus dem Backend zu erhalten, die gesetzt wurden, und sie in einem Array für mich zur Verfügung zu stellen. Ich nahm etwas Code aus der Datei class-wc-admin-attributes.php und modifizierte es für meine Bedürfnisse:

$attribute_taxonomies = wc_get_attribute_taxonomies();
$taxonomy_terms = array();

if ( $attribute_taxonomies ) :
    foreach ($attribute_taxonomies as $tax) :
    if (taxonomy_exists(wc_attribute_taxonomy_name($tax->attribute_name))) :
        $taxonomy_terms[$tax->attribute_name] = get_terms( wc_attribute_taxonomy_name($tax->attribute_name), 'orderby=name&hide_empty=0' );
    endif;
endforeach;
endif;

var_dump($taxonomy_terms);

exit;

Auf diese Weise werden alle Attributtaxonomien durchlaufen, die Begriffe werden für jede Abfrage abgerufen, und Sie erhalten eine Reihe von Begriffsobjekten, mit denen Sie für jede Taxonomie arbeiten können.

10
Nick

Ich benutze das:

echo '<h1>variations</h1>';
mario( $product->get_available_variations());
echo '<h1>Atributos</h1>';
mario($product->get_attributes());
echo '<h1>Poste Terms</h1>';
mario(wp_get_post_terms( $post->ID, 'pa_color'));


function mario($texto){
    echo '<pre>';var_dump($texto);echo '</pre>';
};

Wirklich mit: "wp_get_post_terms ($ post-> ID, 'pa_color')" suche ich nur einen Begriff, aber die Idee ist, nach dem Schlüssel ['name'] zu suchen, der diese Funktion zurückgibt.

3
user2985804

Taxonomien sollten seit 4.5.0 über das Argument 'taxonomy' im Array $ args übergeben werden:

$terms = get_terms( array(
    'taxonomy' => 'pa_taxonyname',
    'hide_empty' => false,
) );

Wenn der Taxonomieschläger beispielsweise "Datum" ist, lautet die Taxonomie "pa_date". Sie können auch über den Attributnamen fahren und den Taxonomienamen unten im Browser anzeigen.

 enter image description here

Ich hoffe, es hilft!

1
michelmany