当前位置: 首页 > 知识库问答 >
问题:

在WooCommerce 3中获取产品属性详细信息

欧阳哲
2023-03-14

null

a:1:{s:10:"pa_flacone";a:6:{s:4:"name";s:10:"pa_flacone";s:5:"value";s:0:"";s:8:"position";s:1:"0";s:10:"is_visible";s:1:"1";s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}}

坦率地说,我不知道如何管理以提取值并在php专用字段上复制它们。它看起来像Json格式。有什么帮助如何解码这些信息和php形式的报告?

共有1个答案

马庆
2023-03-14

您可以使用WP专用函数 ,因为您的字符串是序列化数组:

$serialized_string = 'a:1:{s:10:"pa_flacone";a:6:{s:4:"name";s:10:"pa_flacone";s:5:"value";s:0:"";s:8:"position";s:1:"0";s:10:"is_visible";s:1:"1";s:12:"is_variation";i:1;s:11:"is_taxonomy";i:1;}}';

// Unserializing this string
$data_array = maybe_unserialize( $serialized_string );

// Output for test
echo '<pre>'; print_r( $data_array ); echo '</pre>'; 

我会得到这个:

Array
(
    [pa_flacone] => Array
        (
            [name] => pa_flacone
            [value] => 
            [position] => 0
            [is_visible] => 1
            [is_variation] => 1
            [is_taxonomy] => 1
        )

)

null

Set your product ID
$product_id = 40;

// Get the data (last argument need to be on "false" for serialized arrays)
$attributes_array = get_post_meta( $product_id, '_product_attributes', false); 

// Output for test
echo '<pre>'; print_r( $attributes_array ); echo '</pre>';  

null

最后,您可以通过 对象获取此数据,以使用此类的所有可用方法:

// Set your product ID
$product_id = 40;

// Get the WC_Product object
$product = wc_get_product( $product_id );

// Using WC_Product method get_attributes()
$product_attributes = $product->get_attributes();

// Output for test
echo '<pre>'; print_r( $product_attributes ); echo '</pre>'; 

这次你会得到一些不同的东西。所有属性数据都存储在 对象中,您应该需要使用此类的可用方法,以便以以下方式访问数据:

// Set your product ID
$product_id = 40;

// Get the WC_Product object
$product = wc_get_product( $product_id );

// Using WC_Product method get_attributes()
$product_attributes = $product->get_attributes();

// Iterating through each WC_Product_attribute object
foreach( $product_attributes as $attribute_taxonomy => $product_attribute){

    // get the name (for example)
    $name = $product_attribute->get_name()

    // Access to the data in an array of values
    $attribute_data = $product_attribute->get_data();
}
 类似资料:
  • 问题内容: 在Woocommerce中,我试图获取产品自定义属性值,但我失败了,我一无所获。 所以我尝试了: 我正在获取这些原始数据: 我知道有一个值,因为它显示在属性部分,但是我只是找不到一种方法来将其显示在我的自定义代码中。 问题答案: 编辑* : 自Woocommerce版本3起已弃用 * 按照@datafeedr在他的答案中写道: 甚至更紧凑: 原始答案:

  • 在WooCommerce中,我试图获得产品自定义属性值,但我失败了,什么也得不到。 所以我试着: 我得到了这些原始数据: 我知道有一个值,因为它显示在属性部分,但我就是找不到一种方法用我的自定义代码显示它。

  • 我在WooCommerce的产品上使用了很多产品属性,我循环浏览了表格中的所有变化,这些变化可以在产品页面上用短代码显示。 对于此表,我需要表头中的所有产品属性(这是在循环浏览变体之前),我使用以下方法获取属性: 这不是很优雅,是吗? 所以这也是可行的: 在这两种情况下,我都会得到product属性的slug。我需要得到标签名,因为每个名称(术语)都有一个多段翻译。 如何获取产品属性标签名而不是分

  • 我试图在woocommerce中获得一个特定的自定义属性。我在这个网站上读了很多文章,其中提供了3-5种方法。在尝试了所有方法之后,对我来说唯一有效的方法就是循环所有属性——所有其他属性都不起作用。我有一个名为“pdfs”的自定义属性 以下尝试不起作用:(链接) 这是唯一的一个工作:(链接) 我更希望能够使用第一个选项之一。任何帮助都将不胜感激。谢谢

  • 我在prestashop 1.7中创建一个自定义模块。在该模块中,我想在产品详细信息页面中显示一些自定义内容块。所以自定义内容应该只显示在产品详情页中。我用过这些钩子,但它们不再工作了。 胡克特莱特酒店 这些挂钩仅适用于Prestashop 1.6。在Prestashop 1.7中可以使用哪些挂钩?