在产品标题下方显示 woocommerce 产品属性 slug
Posted
技术标签:
【中文标题】在产品标题下方显示 woocommerce 产品属性 slug【英文标题】:Showing woocommerce product attribute slugs underneath product title 【发布时间】:2022-01-02 17:20:07 【问题描述】:我已经尝试了大约三天来让我的 4 个 woocommerce 产品属性 slug 而不是名称显示在产品下方。
到目前为止,我一直在使用这段代码,除了使用属性名称而不是值之外,它似乎确实完全符合我的要求。
/**
* Display available attributes.
*
* @return array|void
*/
function iconic_available_attributes()
global $product;
if ( ! $product->is_type( 'variable' ) )
return;
$attributes = iconic_get_available_attributes( $product );
if ( empty( $attributes ) )
return;
foreach ( $attributes as $attribute )
?>
<div class="iconic-available-attributes">
<p class="iconic-available-attributes__title"><?php _e( 'Available', 'iconic' ); ?> <strong><?php echo $attribute['name']; ?></strong></p>
<ul class="iconic-available-attributes__values">
<?php foreach ( $attribute['values'] as $value ) ?>
<li class="iconic-available-attributes__value <?php echo $value['available'] ? '' : 'iconic-available-attributes__value--unavailable'; ?>"><?php echo $value['name']; ?></li>
<?php ?>
</ul>
</div>
<?php
/**
* Get available attributes.
*
* @param WC_Product_Variable $product
*
* @return array
*/
/**
* @snippet Display Custom Products Attributes on the Products Page
*/
function cw_woo_attribute()
global $product;
$attributes = $product->get_attributes();
if ( ! $attributes )
return;
$display_result = '';
foreach ( $attributes as $attribute )
if ( $attribute->get_variation() )
continue;
$name = $attribute->get_name();
if ( $attribute->is_taxonomy() )
$terms = wp_get_post_terms( $product->get_id(), $name, 'all' );
$cwtax = $terms[0]->taxonomy;
$cw_object_taxonomy = get_taxonomy($cwtax);
if ( isset ($cw_object_taxonomy->labels->singular_name) )
$tax_label = $cw_object_taxonomy->labels->singular_name;
elseif ( isset( $cw_object_taxonomy->label ) )
$tax_label = $cw_object_taxonomy->label;
if ( 0 === strpos( $tax_label, 'Product ' ) )
$tax_label = substr( $tax_label, 8 );
$display_result .="<span class='attribute'>" . $tax_label . "</span>";
$tax_terms = array();
foreach ( $terms as $term )
$single_term = esc_html( $term->name );
array_push( $tax_terms);
$display_result .= implode(', ', $tax_terms);
else
$display_result .= $name;
$display_result .= esc_html( implode( ', ', $attribute->get_options() ) );
echo "<span class='attributeline'>" . "| " . "</span>" . $display_result;
add_action('woocommerce_shop_loop_item_title', 'cw_woo_attribute', 25);
我不是 PHP 编码员,所以我一直在努力让它工作。
这是当前情况的示例,显示名称:“植物类型”而不是值:“年度”。
期待您的回复,这样我就可以继续店里的其他工作了!
【问题讨论】:
【参考方案1】:你能检查一下这个现有的答案吗?
Wordpress Woocommerce Show attributes on shop page
我刚刚在最近的 Woocommerce 安装中对其进行了测试,接受的答案似乎仍然可以正常工作。
通过预定义要显示的属性来查看是否可以使其工作,就像他们在该问题中所做的那样:pa_country、pa_class 等。您可以在以下部分中看到它。
// Define you product attribute taxonomies in the array
$product_attribute_taxonomies = array( 'pa_country', 'pa_class','pa_faction', 'pa_gender' );
如果您不想预定义属性,您仍然可以像下面那样获取它们(也经过测试)。但是对于测试,只使用预定义的字符串可能会有所帮助,这样您就可以确定它正在工作。
$attributes = $product->get_attributes();
$attrs = [];
foreach($attributes as $key => $attribute) :
$attrs[] = $key;
endforeach;
// just replace the array with attribute names with $attrs
$product_attribute_taxonomies = $attrs;
【讨论】:
感谢您的回复。我以前一直在看那个代码。但我正在努力获得相同的“外观和感觉”。对输出进行样式化是一项艰巨的任务,因为它们都是一次性生成的,而不是循环生成的。此外,它确实包含名称,但去掉了“.$label_name”。关于我猜的 $attr_output 修复。我确实喜欢以 | 之类的结尾。年度 | 80cm |哈代 |并且能够单独设置样式。 实际上现在几乎可以正常工作了。谢谢你的分享。我只需要将其限制为仅显示 4 个值而不是全部。但我想我可以通过预定义而不是自动拉取来做到这一点。这么多不同的产品只是麻烦。 啊,是的,这是真的。您始终可以根据自己的喜好限制结果。只需在 foreach 上方放置一个 $index = 0,然后在循环之后放置一个 $index++。并为将数据添加到 $attr_output 变量 if($index 感谢您的插件。这使它完全按照我的意愿工作!【参考方案2】:将以下代码 sn-p 添加到 functions.php 以在商店存档的产品下显示一个逗号分隔的术语名称字符串。
add_filter( 'woocommerce_after_shop_loop_item_title', 'loop_display_attr', 15 );
function loop_display_attr()
global $product;
// The attribute slug
$attribute = 'attr';
// Get attribute term names in a coma separated string
$term_names = $product->get_attribute( $attribute );
// Display a coma separted string of term names
echo '<p>' . $term_names . '</p>';
【讨论】:
我刚刚尝试了网站上的代码,但似乎没有任何反应。以上是关于在产品标题下方显示 woocommerce 产品属性 slug的主要内容,如果未能解决你的问题,请参考以下文章
php [在存档页面上显示产品尺寸]在存档页面上显示WooCommerce 3.0+产品尺寸,位于产品标题下方。
php [在存档页面上显示产品尺寸]在存档页面上显示WooCommerce 3.0+产品尺寸,位于产品标题下方。
在 WooCommerce 中的标题下方显示循环产品类别项目描述
Wordpress Woocommerce - 标题下方的可变产品价格