如何直接在 Woocommerce 中的(单个)商店页面/产品页面上显示某些属性?

问题描述 投票:0回答:1

我正在尝试直接在商店页面上显示一些属性。属性全部收集在数据库中。为了更容易展示,我制作了一个屏幕截图,以便您可以更好地了解。现在的问题是,我可以用哪些代码来做到这一点。属性(始终有 4 个)应显示在带有图片和购买按钮的块下方的中心。如果我们能找到一种方法来做到这一点,我会非常高兴。非常感谢

enter image description here

好吧,我在 stackoverflow 上找到了一些代码...好消息是,我得到了我想要的结果/属性,坏消息是,在错误的页面上(商店页面而不是单个商店页面)。

这是代码:

add_action('woocommerce_after_shop_loop_item_title', 'display_custom_product_attributes_on_loop', 5 );
function display_custom_product_attributes_on_loop() {
    global $product;

    // Settings: Here below set your product attribute label names
    $attributes_names = array('alter', 'bausteine', 'publicationdate', 'sku');

    $attributes_data  = array(); // Initializing

    // Loop through product attribute settings array
    foreach ( $attributes_names as $attribute_name ) {
        if ( $value = $product->get_attribute($attribute_name) ) {
            $attributes_data[] = $attribute_name . ': ' . $value;
        }
    }

    if ( ! empty($attributes_data) ) {
        echo '<div class="items" style="color: red;"><p>' . implode( '<br>', $attributes_data ) . '</p></div>';
    }
}

此代码向我显示了商店页面上的属性和结果,但我需要在单个商店页面/产品页面上使用它。

谢谢!

woocommerce product
1个回答
1
投票

更改钩子名称然后检查

add_action('woocommerce_single_product_summary', 'display_custom_product_attributes_on_loop', 5 );

function display_custom_product_attributes_on_loop() {
    global $product;

    // Settings: Here below set your product attribute label names
    $attributes_names = array('alter', 'bausteine', 'publicationdate', 'sku');

    $attributes_data  = array(); // Initializing

    // Loop through product attribute settings array
    foreach ( $attributes_names as $attribute_name ) {
        if ( $value = $product->get_attribute($attribute_name) ) {
            $attributes_data[] = $attribute_name . ': ' . $value;
        }
    }

    if ( ! empty($attributes_data) ) {
        echo '<div class="items" style="color: red;"><p>' . implode( '<br>', $attributes_data ) . '</p></div>';
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.