Php 使用CSS将产品属性输出到存档页面和样式

Php 使用CSS将产品属性输出到存档页面和样式,php,wordpress,woocommerce,product,hook-woocommerce,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

在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>';
    }
}
add_action('woocommerce_后面的_shop_loop_item_title','custom_display_post_meta',9);
函数自定义\显示\发布\元(){
全球$产品;
$attr=数组('pa_pg'、'pa_vg'、'pa_nc');
foreach($attr作为$attribute){
$values=wc_get_product_terms($product->id,$attribute,数组('fields'=>'names'));
回声';
echo apply_过滤器('woocommerce_attribute',wpautop(WPTextureize(内爆(',',$values))),$attribute,$values);
回声';
}
}
我需要用
在每一个类的周围包装一个单独的类名,比如“
pa_pg
”、“
pa_vg
”、“
pa_nc

例如,我得到3个具有相同类名的


请提供相关帮助?

首先,在WooCommerce 3+WC_中,无法直接访问产品属性。因此,我必须使您的代码兼容

向每个类添加属性分类slug非常容易:

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>';
    }
}
add_action('woocommerce_后面的_shop_loop_item_title','custom_display_post_meta',9);
函数自定义\显示\发布\元(){
全球$产品;
//获取产品ID-WC 3+兼容性
$product\U id=方法\U存在($product,'get\U id')?$product->get\U id():$product->id;
$product_attributes=数组('pa_pg'、'pa_vg'、'pa_nc');
foreach($product_属性作为$TAXINORYOM){
$values=wc_get_product_terms($product_id,$taxonomy,array('fields'=>'names'));
//=>这里我们将分类名称添加到类中
回声';
echo apply_过滤器('woocommerce_attribute',wpautop(WPTextureize(内爆(',',$values))),$taxonomy,$values);
回声';
}
}
代码位于活动子主题(或主题)的function.php文件或任何插件文件中


首先,在WooCommerce 3+WC_中,无法直接访问产品属性。因此,我必须使您的代码兼容

向每个类添加属性分类slug非常容易:

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>';
    }
}
add_action('woocommerce_后面的_shop_loop_item_title','custom_display_post_meta',9);
函数自定义\显示\发布\元(){
全球$产品;
//获取产品ID-WC 3+兼容性
$product\U id=方法\U存在($product,'get\U id')?$product->get\U id():$product->id;
$product_attributes=数组('pa_pg'、'pa_vg'、'pa_nc');
foreach($product_属性作为$TAXINORYOM){
$values=wc_get_product_terms($product_id,$taxonomy,array('fields'=>'names'));
//=>这里我们将分类名称添加到类中
回声';
echo apply_过滤器('woocommerce_attribute',wpautop(WPTextureize(内爆(',',$values))),$taxonomy,$values);
回声';
}
}
代码位于活动子主题(或主题)的function.php文件或任何插件文件中

测试和工作

只需更改

echo '<div class="new-product-meta">';
echo';

echo';
给了我我需要的结果。我应该指定我使用的是woocommerce 2.6.4。另外,有人编辑了原始问题的一部分,因此它没有意义。

只是简单地更改

echo '<div class="new-product-meta">';
echo';

echo';

给了我我需要的结果。我应该指定我使用的是woocommerce 2.6.4。另外,有人编辑了原始问题的一部分,因此没有任何意义。

你已经有这方面的课程了吗?为什么不使用
$attribute
变量作为类名呢?您已经有了相应的类吗?为什么不使用
$attribute
变量作为类名呢?另外,刚刚测试了我的代码,它在WooCommerce版本2.6+上运行良好。另外,刚刚测试了我的代码,它在WooCommerce版本2.6上运行良好+