有一个代码可以在存档/类别页面上显示指定的产品属性。
/* Show product attributes */
add_action( 'woocommerce_after_shop_loop_item', 'new_template_loop_product_meta', 20 );
function new_template_loop_product_meta() {
global $product;
$attr_list = [
'Brand' => 'pa_brand',
'Country' => 'pa_country',
'SKU' => 'sku',
'Material' => 'pa_material',
'Type' => 'pa_product_type',
'Color' => 'pa_color',
'Size' => 'pa_size',
'Model' => 'pa_model',
'Collection' => 'pa_collection',
'Mechanism' => 'pa_mechanism',
'Magnetic' => 'pa_magnetic',
'Side' => 'pa_side',
'Load' => 'pa_load',
'Availability' => 'pa_availability',
];
if ( ! is_object( $product ) ) {
$product = wc_get_product( get_the_id() );
}
echo '<div class="pa">';
foreach ( $attr_list as $attr_title => $attr_name ) {
show_attribute( $product, $attr_title, $attr_name );
}
echo '</div>';
}
/**
* Show attribute.
*
* @param WC_Product $product Product.
* @param string $attr_title Attribute title.
* @param string $attr_name Attribute name.
*/
function show_attribute( $product, $attr_title, $attr_name ) {
if ( 'sku' === $attr_name ) {
$attr = (string) $product->get_sku();
} else {
$attr = $product->get_attribute( $attr_name );
}
if ( '' === $attr ) {
return;
}
echo '<span>' . esc_html( $attr_title ) . ': </span><span class="pa-right">' . esc_html( $attr ) . '</span><br />';
}
还有一些产品类别,您只需要显示代码中列出的某些属性。
例如,在“A 类”产品列表中,您需要显示属性pa_brand, pa_country。在“B 类”产品列表中,您需要显示属性pa_brand, pa_model等。
据我了解,您需要指定类别 ID $cat_id = 197;,并且$cat_ids = $product->get_category_ids();
为每个类别设置您自己的产品属性列表。
但是如何将所有这些组合成一个代码呢?告诉我如何做到这一点?我认为其他用户也会发现这个答案也很有用。
我会很高兴你的帮助!
这是工作代码:
在数组
$attrs_by_cats中,指定id类别和属性的对应关系。