在 WooCommerce 单品中显示产品属性列表的简码
Shortcode displaying product attributes list in WooCommerce single products
所以我一直在努力寻找这方面的任何信息,但看不到任何明显的方法。我想在产品描述中有一个 table 列出我设置的某些属性。
因此,例如在描述中,我会在标题 A 后跟一些文本和 table 属性 1、2 和 3,然后在标题 B 下一些文本和属性 4、5 和 6 .
我认为最简单的方法是创建一个短代码,所以我已经尝试并清楚地错过了一些重要的东西,因为当我使用它时它根本没有显示任何东西。
add_action( 'woocommerce_single_product_summary', 'show_attribute_group_a', 45 );
add_shortcode( 'show_attributes_a', 'show_attribute_group_a' );
function show_attribute_group_a() {
global $product;
$attribute1 = $product->get_attribute('attribute1');
$attribute2 = $product->get_attribute('attribute2');
?>
<table class="">
<tr class="">
<th class="">Attribute 1</th>
<td class=""><?php echo $attribute1; ?></td>
</tr>
<tr class="">
<th class="">Attribute 2</th>
<td class=""><?php echo $attribute2; ?></td>
</tr>
</table>
<?php
}
所以在我尝试拉取属性的地方我使用了属性的 slug 是正确的吗?但是,即使那部分是错误的,我仍然希望看到一个空的 table 。显然有一些根本性的错误,我看不出是什么。
构建短代码时,输出永远不会回显,而是会返回。请尝试以下操作:
// The shortcode
add_shortcode( 'show_attributes_a', 'attribute_group_a_shortcode' );
function attribute_group_a_shortcode() {
global $product;
$attribute1 = $product->get_attribute('attribute1');
$attribute2 = $product->get_attribute('attribute2');
$output_html = ''; // Initializing
if ( ! empty($attribute1) || ! empty($attribute2) ) {
$output_html .= '<table class="">';
if ( ! empty($attribute1) ) {
$output_html .= '<tr class="">
<th class="">' . __("Attribute 1", "woocommerce") . '</th>
<td class="">' . $attribute1 . '</td>
</tr>';
}
if ( ! empty($attribute2) ) {
$output_html .= '<tr class="">
<th class="">' . __("Attribute 2", "woocommerce") . '</th>
<td class="">' . $attribute2 . '</td>
</tr>';
}
$output_html .= '</table>';
}
return $output_html; // Always use "return" in a shortcode, never use "echo"
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
现在您可以在产品描述或简短描述的文本编辑器中使用简码[show_attributes_a]
,在单个产品页面上显示产品属性的自定义table。
或者您可以使用以下代码在产品标签前显示自定义table产品属性:
// Display the shortcode output in Single product pages
add_action( 'woocommerce_single_product_summary', 'display_table_attribute_group_a', 45 );
function display_table_attribute_group_a() {
echo do_shortcode('[show_attributes_a]');
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
所以我一直在努力寻找这方面的任何信息,但看不到任何明显的方法。我想在产品描述中有一个 table 列出我设置的某些属性。
因此,例如在描述中,我会在标题 A 后跟一些文本和 table 属性 1、2 和 3,然后在标题 B 下一些文本和属性 4、5 和 6 .
我认为最简单的方法是创建一个短代码,所以我已经尝试并清楚地错过了一些重要的东西,因为当我使用它时它根本没有显示任何东西。
add_action( 'woocommerce_single_product_summary', 'show_attribute_group_a', 45 );
add_shortcode( 'show_attributes_a', 'show_attribute_group_a' );
function show_attribute_group_a() {
global $product;
$attribute1 = $product->get_attribute('attribute1');
$attribute2 = $product->get_attribute('attribute2');
?>
<table class="">
<tr class="">
<th class="">Attribute 1</th>
<td class=""><?php echo $attribute1; ?></td>
</tr>
<tr class="">
<th class="">Attribute 2</th>
<td class=""><?php echo $attribute2; ?></td>
</tr>
</table>
<?php
}
所以在我尝试拉取属性的地方我使用了属性的 slug 是正确的吗?但是,即使那部分是错误的,我仍然希望看到一个空的 table 。显然有一些根本性的错误,我看不出是什么。
构建短代码时,输出永远不会回显,而是会返回。请尝试以下操作:
// The shortcode
add_shortcode( 'show_attributes_a', 'attribute_group_a_shortcode' );
function attribute_group_a_shortcode() {
global $product;
$attribute1 = $product->get_attribute('attribute1');
$attribute2 = $product->get_attribute('attribute2');
$output_html = ''; // Initializing
if ( ! empty($attribute1) || ! empty($attribute2) ) {
$output_html .= '<table class="">';
if ( ! empty($attribute1) ) {
$output_html .= '<tr class="">
<th class="">' . __("Attribute 1", "woocommerce") . '</th>
<td class="">' . $attribute1 . '</td>
</tr>';
}
if ( ! empty($attribute2) ) {
$output_html .= '<tr class="">
<th class="">' . __("Attribute 2", "woocommerce") . '</th>
<td class="">' . $attribute2 . '</td>
</tr>';
}
$output_html .= '</table>';
}
return $output_html; // Always use "return" in a shortcode, never use "echo"
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
现在您可以在产品描述或简短描述的文本编辑器中使用简码[show_attributes_a]
,在单个产品页面上显示产品属性的自定义table。
或者您可以使用以下代码在产品标签前显示自定义table产品属性:
// Display the shortcode output in Single product pages
add_action( 'woocommerce_single_product_summary', 'display_table_attribute_group_a', 45 );
function display_table_attribute_group_a() {
echo do_shortcode('[show_attributes_a]');
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。