2013-05-01 5 views
13

In Woocommerce können Sie globale Produktattribute und Begriffe hinzufügen. Also zum Beispiel:wocommerce erhalten Attributterme

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

Dies ist produktunabhängig. Sie können dann aus den vordefinierten Attributen für ein Produkt auswählen.

Ich muss alle Begriffe in einem Attribut mit PHP erhalten. Wählen Sie das gewünschte Attribut aus, z. B. Größe, und geben Sie dann ein Array einschließlich [small,medium,large] zurück.

Scheint einfach genug, aber ich kann keine Hilfe dabei finden.

Antwort

22

Etwas verwirrend, besonders wenn man durch die WooCommerce Docs schaut, da es absolut keine Erwähnung gibt, eine Liste der Begriffe/Attribute zu bekommen.

Die Attribute werden als benutzerdefinierte Taxonomie gespeichert und die Begriffe sind Taxonomiebegriffe. Das heißt, Sie nativen Wordpress-Funktionen verwenden können: Wordpress get_terms() Function Reference

von in WooCommerce auf einem Attribut, klicken Sie in der URL sehen können und Sie können sehen, dass sie alle vorangestellt mit ‚PA_‘ sind

Dies ist wahrscheinlich, was Sie brauchen :

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

Dies ist die richtige Antwort. –

+0

Wie kann ich es zählen? – huykon225

3

ich benutze diese:

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')" ich suche nur ein Begriff, b Die Idee besteht darin, für den Schlüssel ['name'], der diese Funktion zurückgibt, eine Schleife auszuführen.

+0

danke für deine Antwort, es war sehr hilfreich. –

10

Ich wollte in der Lage sein, alle verschiedenen Attribute aus dem Backend, die gesetzt wurden, zu bekommen und sie in ein Array für mich zu bekommen, nahm ich etwas Code aus der Datei class-wc-admin-attributes.php und modifiziert 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; 

Diese Schleife wird durch die alle Attribut Taxonomien, rufen Sie die Bedingungen für jeden, so dass Sie mit einer Reihe von Begriff Objekte mit für jede Taxonomie zu arbeiten.

+0

danke für diesen Code :) – jack