2013-05-01 11 views
13

In Woocommerce puoi aggiungere attributi e termini di prodotto globali. Quindi, ad esempio:woocommerce ottieni i termini dell'attributo

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

Questo è un prodotto indipendente. È quindi possibile selezionare dagli attributi predefiniti su un prodotto.

Ho bisogno di ottenere tutti i termini in un attributo con php. Quindi selezionare l'attributo richiesto, ad esempio la dimensione, quindi restituire un array che includa [small,medium,large].

Sembra abbastanza semplice ma non riesco a trovare alcun aiuto su come farlo.

risposta

22

Un po 'di confusione, soprattutto quando si guarda attraverso i documenti WooCommerce poiché non si fa assolutamente menzione di ottenere un elenco di termini/attributi.

Gli attributi vengono salvati come una tassonomia personalizzata e i termini sono termini di tassonomia. Ciò significa che è possibile utilizzare le funzioni di Wordpress native: Wordpress get_terms() Function Reference

Cliccando su un attributo nella WooCommerce, si può guardare l'URL e si possono vedere sono tutti preceduti da 'pa_'

Questo è probabilmente quello che ti serve :

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

Questa è la risposta giusta. –

+0

Come posso contarlo? – huykon225

3

io uso questo:

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>'; 
}; 

Really con: "wp_get_post_terms ($ post-> ID, 'pa_color')" cerco un solo termine, b l'idea è di fare un ciclo per il tasto ['nome'] che restituisce quella funzione.

+0

grazie per la tua risposta, è stato davvero utile. –

10

Volevo essere in grado di ottenere tutti i diversi attributi dal back-end che sono stati impostati, e metterli in un array con cui lavorare, ho preso del codice dal file class-wc-admin-attributes.php e modificato per le mie esigenze:

$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; 

Questo ciclo volontà attraverso tutte le tassonomie di attributo, recuperare i termini per ciascuno, lasciando con un array di oggetti termine con cui lavorare per ogni tassonomia.

+0

grazie per questo codice :) – jack

Problemi correlati