在 WooCommerce 属性中使用第二个 foreach 循环将值列为单个 <li> 元素
Using a second foreach loop in WooCommerce attributes list values as single <li> elements
我正在尝试获取产品属性(仅 selected 的)以列表形式显示,如下面第一张图片所示:
不幸的是,我的列表现在是这样的:
(如何用另一个 foreach 语句划分值?)
此外,我的 code/shortcode 显示了找到的所有产品属性,并且想使用类似的东西: [product_attributes:sizes|color|print] 到 select我要显示的属性。
add_filter( 'wplister_process_template_html', 'my_wplister_template_filter_product_attributes_list', 10, 3 );
function my_wplister_template_filter_product_attributes_list( $html, $item, $images ) {
$post_id = $item['parent_id'] ? $item['parent_id'] : $item['post_id'];
$attributes = ProductWrapper::getAttributes( $post_id );
$attributes_list = '';
foreach ($attributes as $name => $value) {
$value = '<li>' . str_replace( '|', ', ', $value ) . '</li>';
$attributes_list .= '<div>';
$attributes_list .= '<p>' . $name . ': <p>';
$attributes_list .= '<ul class="variation">' . $value . '</ul>';
$attributes_list .= '</ul>';
$attributes_list .= '</div>';
}
$html = str_replace( '[[product_attributes_list]]', $attributes_list, $html );
return $html;
}
如何在列表值中使用第二个 foreach 循环作为单个 <li>
元素?
谢谢
我真的无法测试它。我对您的代码进行了一些更改以创建第二个 foreach 循环。
试试这个:
add_filter( 'wplister_process_template_html', 'my_wplister_template_filter_product_attributes_list', 10, 3 );
function my_wplister_template_filter_product_attributes_list( $html, $item, $images ) {
$post_id = $item['parent_id'] ? $item['parent_id'] : $item['post_id'];
$attributes = ProductWrapper::getAttributes( $post_id );
$attributes_list = '';
foreach ($attributes as $name => $attr_values) {
$attributes_list .= '<div>
<p>' . $name . ': <p>
<ul class="variation">';
// Dispaching each attribute values in an array
$attr_values_arr = explode( '|', $attr_values );
// The second foreach loop
foreach ($attr_values_arr as $attr_value){
$attributes_list .= '<li>' . $attr_value . '</li>';
}
$attributes_list .= '</ul>
</div>';
}
$html = str_replace( '[[product_attributes_list]]', $attributes_list, $html );
return $html;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
我希望这会奏效。
我正在尝试获取产品属性(仅 selected 的)以列表形式显示,如下面第一张图片所示:
不幸的是,我的列表现在是这样的: (如何用另一个 foreach 语句划分值?)
此外,我的 code/shortcode 显示了找到的所有产品属性,并且想使用类似的东西: [product_attributes:sizes|color|print] 到 select我要显示的属性。
add_filter( 'wplister_process_template_html', 'my_wplister_template_filter_product_attributes_list', 10, 3 );
function my_wplister_template_filter_product_attributes_list( $html, $item, $images ) {
$post_id = $item['parent_id'] ? $item['parent_id'] : $item['post_id'];
$attributes = ProductWrapper::getAttributes( $post_id );
$attributes_list = '';
foreach ($attributes as $name => $value) {
$value = '<li>' . str_replace( '|', ', ', $value ) . '</li>';
$attributes_list .= '<div>';
$attributes_list .= '<p>' . $name . ': <p>';
$attributes_list .= '<ul class="variation">' . $value . '</ul>';
$attributes_list .= '</ul>';
$attributes_list .= '</div>';
}
$html = str_replace( '[[product_attributes_list]]', $attributes_list, $html );
return $html;
}
如何在列表值中使用第二个 foreach 循环作为单个 <li>
元素?
谢谢
我真的无法测试它。我对您的代码进行了一些更改以创建第二个 foreach 循环。
试试这个:
add_filter( 'wplister_process_template_html', 'my_wplister_template_filter_product_attributes_list', 10, 3 );
function my_wplister_template_filter_product_attributes_list( $html, $item, $images ) {
$post_id = $item['parent_id'] ? $item['parent_id'] : $item['post_id'];
$attributes = ProductWrapper::getAttributes( $post_id );
$attributes_list = '';
foreach ($attributes as $name => $attr_values) {
$attributes_list .= '<div>
<p>' . $name . ': <p>
<ul class="variation">';
// Dispaching each attribute values in an array
$attr_values_arr = explode( '|', $attr_values );
// The second foreach loop
foreach ($attr_values_arr as $attr_value){
$attributes_list .= '<li>' . $attr_value . '</li>';
}
$attributes_list .= '</ul>
</div>';
}
$html = str_replace( '[[product_attributes_list]]', $attributes_list, $html );
return $html;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
我希望这会奏效。