Ich verwende WooCommerce mit WordPress, um einen Laden mit antiken Fotos aufzubauen.
Ich verwende die Produktattribute-Funktion von WooCommerce, um Informationen über einen Artikelfotografen zu speichern.
Siehe hier für ein Beispiel, das Fotografenattribut wird in der Box auf der linken Seite herausgezogen http://bit.ly/1Dp999O
Der Code, der das Attribut herauszieht, sieht folgendermaßen aus:
if($attribute['is_taxonomy']) {
$values=wc_get_product_terms($product->id, $attribute['name'], array('fields' => 'names'));
echo apply_filters('woocommerce_attribute', wpautop(wptexturize(implode(', ', $values))), $attribute, $values);
}
$values sieht so aus:
Array ( [0] => Photographer 1 )
Das Problem ist, wie komme ich zum Permalink für den Fotografen, der automatisch von WordPress und WooCommerce generiert wird:
http://bit.ly/1JtwBna
Ich kann in WooCommerce keine Dokumentation dafür finden, und dies scheint eine Taxonomie innerhalb einer Taxonomie zu sein, die etwas weiter geht als Standard-WordPress, aber ich gehe davon aus, dass dies eine ziemlich standardmäßige Anforderung ist. Alle Hinweise geschätzt.
Sobald Sie den Attributbegriff (in diesem Fall den Namen des Fotografen) haben, können Sie ihn verwenden get_term_link()
um die URL zu bekommen. Weil die $product
id wird nicht an die weitergegeben woocommerce_attribute
Ordner konnte ich das nicht filtern, sondern stattdessen eine Überschreibung des erstellen product-attributes.php
Schablone. Und änderte den relevanten Abschnitt wie folgt:
if ( $attribute['is_taxonomy'] ) {
$terms = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'all' ) );
$html="";
$counter = 1;
$total = count( $terms );
foreach( $terms as $term ){
$html .= sprintf( '<a href="https://stackoverflow.com/questions/29548487/%s" title="Permalink to %s">%s</a>',
esc_url( get_term_link( $term ) ),
esc_attr( $term->name ),
wptexturize( $term->name )
);
if( $counter < $total ){
$html .= ', ';
}
$counter++;
}
echo wpautop( $html );
}
Aus irgendeinem Grund ist die URL kein hübscher Permalink. Es ist spät und ich kann nicht sagen, ob das mit meiner Konfiguration zu tun hat oder was genau, aber es ist ein Anfang.
Das macht im Grunde das, was ich brauche:
$terms = get_the_terms($product->id, $attribute['name']);
foreach ($terms as $term){
echo '<a href="'.get_term_link($term->slug, $term->taxonomy).'">'.$term->name.'</a>';
}
Könnte aber sicher ein wenig Feinschliff vertragen.
Ein Attribut ist keine Taxonomie innerhalb einer Taxonomie, es ist lediglich eine benutzerdefinierte Taxonomie.
– Helgathewikinger
9. April 2015 um 21:00 Uhr
Ah, also wird get_the_terms vermutlich funktionieren? Werde das mal ausprobieren und entsprechend updaten
– Christian Maine
9. April 2015 um 21:04 Uhr
Ja, die meisten begriffsbezogenen Funktionen sollten funktionieren.
– Helgathewikinger
9. April 2015 um 21:49 Uhr