2016-07-20 22 views
4

Ich versuche, ein bestimmtes benutzerdefiniertes Attribut in Woocommerce zu erhalten. Ich habe Tonnen von Threads auf dieser Seite gelesen, die ungefähr 3-5 Methoden anbieten, wie man es macht. Nachdem ich alles versucht habe, ist die einzige Methode, die für mich funktionierte, das Durchlaufen aller Attribute - alle anderen funktionierten nicht. Ich habe ein benutzerdefiniertes Attribut namens 'pdfs'WooCommerce - Get benutzerdefinierte Produktattribut

Die folgenden Versuche hat nicht funktioniert: (link)

$global product; 
$myPdf = array_shift(wc_get_product_terms($product->id, 'pdfs', array('fields' => 'names'))); 

$myPdf = $product->get_attribute('pdfs'); 

$myPdf = get_post_meta($product->id, 'pdfs', true); 

Dies ist die einzige ist, die Arbeit tat (link)

$attributes = $product->get_attributes(); 
foreach ($attributes as $attribute) { 
    if (attribute_label($attribute[ 'name' ]) == "pdfs") { 
     echo array_shift(wc_get_product_terms($product->id, $attribute[ 'name' ])); 
    } 
} 

Ich würde viel lieber in der Lage sein, eine der ersten Optionen zu verwenden Jede Hilfe wäre willkommen.
Dank

Antwort

7

Update: Hinzugefügt Kompatibilität für WooCommerce 3+

Als Attribute werden immer mit pa_ in DB Zierer für sie mit wc_get_product_terms() Funktion bekommen, müssen Sie verwenden pa_pdfs anstelle von pdfs, auf diese Weise:

global $product; 

$product_id = method_exists($product, 'get_id') ? $product->get_id() : $product->id; // Added WC 3+ support 

$myPdf = array_shift(wc_get_product_terms($product_id, 'pa_pdfs', array('fields' => 'names'))); 

Referenz: How to get a products custom attributes from WooCommerce

+0

Perfekt - Danke! – DaveyD

+0

Vielen Dank für Ihre Antwort, es war sehr hilfreich. –

+0

Ich bekomme -> Hinweis: Nur Variablen sollten als Referenz übergeben werden. Woocommerce Version 3.2.6. Code ---> $ date = array_shift (wc_get_product_terms ($ produkt-> get_id(), 'pa_date', array ('felder' => 'namen'))); Was kann falsch sein? Ich kann es nicht lösen. Ich bekomme 'Null' von gettype ($ date). Vielleicht könnte ich etwas Hilfe bekommen? – Kristis