在 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 文件。已测试并有效。