php - 获取产品自定义属性以在 WooCommerce 产品循环中显示它们

标签 php wordpress woocommerce attributes product

我在一个 woocommerce 网站(房地产)工作,我无法在我的前台页面上显示产品自定义属性(例如平方米、房间、厕所等)。我正在尝试使用下面的代码,但我可以让它工作。使用我拥有的代码,我只能显示产品 ID,但是当涉及到属性时,当我将属性 ID 放入代码中时,它只显示单词“Array”或仅显示“Nothing”。

这是我的代码:

add_action('woocommerce_after_shop_loop_item_title', 'cstm_display_product_category', 5);

function cstm_display_product_category()
{
    global $product;

    $productAttribute = $product->get_id();

   //if(isset($productAttribute)){
       echo '<div class="items" style="color: #fff;"><p>Output: ' . $productAttribute . '</p></div>';
   //}
}

您可以实时查看输出 here

无论您能给我什么帮助或指导来实现这一目标,我们都将不胜感激。我在这方面是个菜鸟。

PD我将这段代码插入到我的 functions.php 文件中。

WordPress 是最新的。 Woocommerce 是最新的。

最佳答案

更新 3

对于产品属性(自定义或非自定义),您可以使用 WC_Product 方法 get_attribute(),您可以在其中输入属性名称、slug 或分类法。所以在你的代码中:

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

    $value1 = $product->get_attribute('Square meters');
    $value2 = $product->get_attribute('Rooms');
    $value3 = $product->get_attribute('Toilets');

    if ( ! empty($value1) || ! empty($value2) || ! empty($value3) ) {

        echo '<div class="items" style="color: red;"><p>';

        $attributes = array(); // Initializing

        if ( ! empty($value1) ) {
            $attributes[] = __("Square meters:") . ' ' . $value1;
        }

        if ( ! empty($value2) ) {
            $attributes[] = __("Rooms:") . ' ' . $value2;
        }

        if ( ! empty($value3) ) {
            $attributes[] = __("Toilets:") . ' ' . $value3;
        }

        echo implode( '<br>', $attributes ) . '</p></div>';
    }
}

代码进入事件子主题(或事件主题)的 functions.php 文件。经过测试并有效。


从一组简单的产品属性名称中自动生成代码:

下面的代码将提供相同的输出,但它经过了压缩和优化,并且只需要一组您想要的产品属性:

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('Square meters', 'Rooms', 'Toilets');

    $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>';
    }
}

代码进入事件子主题(或事件主题)的 functions.php 文件。经过测试并有效。

关于php - 获取产品自定义属性以在 WooCommerce 产品循环中显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64389872/

相关文章:

javascript - 使用标签在 url 上添加 GET 参数

javascript - 有没有一种方法可以使用 Javascript 或 jQuery 隐藏列表中与元素和相邻列的高度相关的元素?

javascript - 如何使用异常输入将数据从表单提取到 session 中

php - krajee引导文件输入

php - 获取本地取货以及 Woocommerce 中订单的详细信息

javascript - 您可以自动将产品从在线商店添加到 WooCommerce 吗?

php - WooCommerce PDF 水印 : Using custom order item meta data

wordpress - DocuSign 如何与 WordPress 配合使用?

php - 在带有 Windows 7 的 XAMPP 1.8.3 上运行 ImageMagick

php - 在 If 语句后添加 php 代码