输出Woocommerce产品属性以使用CSS存档页面和样式

时间:2017-10-05 09:15:31

标签: php wordpress woocommerce product hook-woocommerce

在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>具有相同的类名。

对此有任何帮助吗?

2 个答案:

答案 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。另外,有人编辑了原问题的一部分,所以没有意义。