在WooCommerce中,我正在尝试将产品属性输出到存档页面。我已使用下面的代码成功输出它们,但无法单独设置它们。
add_action( 'woocommerce_after_shop_loop_item_title', 'custom_display_post_meta', 9 );
function custom_display_post_meta() {
global $product;
$attr = array('pa_pg', 'pa_vg', 'pa_nc');
foreach ( $attr as $attribute ) {
$values = wc_get_product_terms( $product->id, $attribute, array( 'fields' => 'names' ) );
echo '<div class="new-product-meta">';
echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
echo '</div>';
}
}
我应该在<div>
围绕每个类名包含一个单独的类名,例如&#39; pa_pg
&#39;,&#39; pa_vg
&#39 ;,&#39; pa_nc
&#39;。
例如,我得到3 <div>
具有相同的类名。
对此有任何帮助吗?
答案 0 :(得分:0)
首先,在WooCommerce 3+ WC_Product属性中无法直接访问。所以我让你的代码兼容。
将属性分类标本添加到每个类中非常容易:
add_action( 'woocommerce_after_shop_loop_item_title', 'custom_display_post_meta', 9 );
function custom_display_post_meta() {
global $product;
// Get the Product ID - WC 3+ compatibility
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
$product_attributes = array('pa_pg', 'pa_vg', 'pa_nc');
foreach ( $product_attributes as $taxonomy ) {
$values = wc_get_product_terms( $product_id, $taxonomy, array( 'fields' => 'names' ) );
// => HERE we add the taxonomy name to the <div> class
echo '<div class="new-product-meta '.$taxonomy.'">';
echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $taxonomy, $values );
echo '</div>';
}
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
经过测试和工作
答案 1 :(得分:0)
只需更改
echo '<div class="new-product-meta">';
到
echo '<div class="new-product-meta '.$attribute.'">';
给了我需要的结果。我应该指定我使用的是woocommerce 2.6.4。另外,有人编辑了原问题的一部分,所以没有意义。