我在WooCommerce单一产品页面上创建了六个自定义属性,其中包含一个自定义函数。它们包括:图标、标签和术语。
基于用每个答案代码的自定义图像替换WooCommerce属性标签,我使用了以下函数(使用自定义HTML标记,与WooCommerce product-attributes.php模板中的标记不同):
add_action('woocommerce_single_product_summary', 'pa_custom_attributes', 25);
function pa_custom_attributes(){
global $product;
$attributes = $product->get_attributes();
if ( ! $attributes ) return;
$out = '<div class="custom-attributes">';
foreach ( $attributes as $attribute ) {
if ( $attribute->get_variation() ) continue;
if ( $attribute->is_taxonomy() ) {
$taxonomy = $attribute->get_name();
$taxo_obj = $attribute->get_taxonomy_object();
$name = $taxo_obj->attribute_name;
$label = $taxo_obj->attribute_label;
$label_name = wc_attribute_label( $taxonomy );
$out .= '<div class="' . esc_attr( $taxonomy ) . ' single-attribute">';
$out .= '<div><img class="attribute-image" src="'.get_stylesheet_directory_uri().'/woocommerce/attributes/'.$name.'.svg" alt="Attribute '.$label.'"/></div>';
$out .= '<div class="attribute-label '.$label.'">'.$label_name.'</div>';
$out .= '<div class="attribute-values">';
$terms = wp_get_post_terms( $product->get_id(), $taxonomy, array('fields' => 'names') );
foreach ( $terms as $term_name )
$term_names['names'] = $term_name;
$out .= implode(', ', $term_names);
$out .= '</div></div>';
} else {
$value_string = implode( ', ', $attribute->get_options() );
$out .= '<div class="' . sanitize_title($taxonomy) . ' ' . sanitize_title( $value_string ) . '">';
$out .= '<div class="attribute-label">' . $taxonomy . ': </div> ';
$out .= '<div class="attribute-value">' . esc_html( $value_string ) . '</div></div>';
}
}
$out .= '</div>';
echo $out;
}
该函数工作正常,但存在一个问题:如果特定属性的项不止一个(例如颜色:红色、蓝色、绿色),则该函数在屏幕上仅打印数组的最后一个值。
我阅读了文档,做了很多测试,并检查CSS是否没有问题。我也在StackOverflow和在线阅读了几乎所有关于这个问题的答案,但我找不到答案。
有没有人能帮我理解错误在哪里?
问题来自代码中的以下内容:
$terms = wp_get_post_terms( $product->get_id(), $taxonomy, array('fields' => 'names') );
foreach ( $terms as $term_name )
$term_names['names'] = $term_name;
$out .= implode(', ', $term_names);
可替换为以下内容:
$terms = wp_get_post_terms( $product->get_id(), $taxonomy, array('fields' => 'names') );
$term_names = []; // Initializing
// Loop through each terms
foreach ( $terms as $term_name ) {
$term_names[] = $term_name;
}
$out .= implode(', ', $term_names);
或者用一行代码更好:
$out .= $product->get_attribute( $taxonomy );
我试图在woocommerce中获得一个特定的自定义属性。我在这个网站上读了很多文章,其中提供了3-5种方法。在尝试了所有方法之后,对我来说唯一有效的方法就是循环所有属性——所有其他属性都不起作用。我有一个名为“pdfs”的自定义属性 以下尝试不起作用:(链接) 这是唯一的一个工作:(链接) 我更希望能够使用第一个选项之一。任何帮助都将不胜感激。谢谢
我正在开发一个WooCommerce主题,在单个产品页面上,我想显示来自同一供应商类别的产品旋转木马。 我有以下类别结构: 所有产品 1号产品类别 第2类产品 产品类别 供应商 供应商名称1 供应商名称2 供应商名称 在查看类别1中的产品时,如果将产品分配给此类子类别,则我希望显示来自同一供应商名称类别的其他产品的转盘。 在我的示例中,供应商和所有产品都是同一级别的父类别。 做一个定制的产品循环非
我有一个商业珠宝网站。在单变量产品页面上,我添加了一些变体,并添加了一个文本框(文本框供客户填写一些将打印在珠宝上的内容)。 因此,我希望页面的工作方式如下:如果客户选择一个特定的产品变体并开始在文本框中键入,则产品的价格应根据字母数变化(注意:仅当选择了一个特定变体时,此功能才起作用),其他每种产品的价格将是固定的。 我确实为文本框价格更新做了部分工作。 我在这里遇到的问题是如何选择特定的产品变
我使用woocommerce插件创建了一个可变产品。在变量产品中,我创建了一个自定义属性“License Duration”,其值为“3个月| 6个月| 1年|寿命”。 现在我想在一个定制的单一产品模板上显示这个属性。 我试过以下解决方法 1. 这显示了
问题内容: 在Woocommerce中,我试图获取产品自定义属性值,但我失败了,我一无所获。 所以我尝试了: 我正在获取这些原始数据: 我知道有一个值,因为它显示在属性部分,但是我只是找不到一种方法来将其显示在我的自定义代码中。 问题答案: 编辑* : 自Woocommerce版本3起已弃用 * 按照@datafeedr在他的答案中写道: 甚至更紧凑: 原始答案:
在WooCommerce中,我试图获得产品自定义属性值,但我失败了,什么也得不到。 所以我试着: 我得到了这些原始数据: 我知道有一个值,因为它显示在属性部分,但我就是找不到一种方法用我的自定义代码显示它。