如何在 WooCommerce 中获取产品特定元数据

我正在使用 WooCommerce,并且想要获取专门针对该产品的元密钥,例如价格、颜色等...但问题是我不想获取所有元密钥,而只想获取所需的元密钥。例如,我不需要_edit_last, _edit_lock, _wc_review_count... 而只需要priceand color(作为示例)。如果它是一个不重要的网页,但我不想在网页上显示它们,但我想将它们作为 json 发送到其他地方。所以应该对数据进行过滤。顺便说一句,它在插件中,我想与其他人分享,所以我不能/不应该访问他们的 WooCommerce api。


我的代码获取所有元键(但我只想要其中的一些):


$attributes = get_post_meta($product->get_id());

foreach($attributes as $key => $value) {

    $result['products'][$p]['attributes'][$key] = $value[0];

}

上面代码的结果是:


[attributes] => Array

(

    [_edit_last] => 1

    [_edit_lock] => 1594817821:1

    .

    .

    .

)

但我想要:


[attributes] => Array

(

    [price] => 1000

    [color] => 'red'

    .

    .

    .

)


杨魅力
浏览 136回答 3
3回答

慕哥6287543

有多种方法,具体取决于您想要的:1)。您将需要使用WC_Product 对象上的WC_Product方法来获取产品属性:$product_id = 37; // Defined product Id for testing// Get the WC_Product Object from the product ID (optional)$product = wc_get_product($product_id); // If needed// Get product active price$product_data = $product->get_price();// … and so on …2)。对于特定或自定义产品元数据,您将使用使用所需元键的WC_Data方法,例如:get_meta()$product_id = 37; // Defined product Id for testing// Get the WC_Product Object from the product ID (optional)$product = wc_get_product($product_id); // If needed// Get custom meta data froma specific meta key$product_data = $product->get_meta('my_meta_key');// … and so on …3)。您可以使用对象上的WC_Data方法get_data()WC_Product来获取数组中不受保护的元数据:$product_id = 37; // Defined product Id for testing// Get the WC_Product Object from the product ID (optional)$product = wc_get_product($product_id); // If needed// Get product unprotected meta data in an array$product_data = $product->get_data();// Output row dataecho '<pre>'. print_r( $obj, true ) . '</pre>';你会得到类似的东西(摘录):Array(    [id] => 37    [name] => Happy Ninja Dish Hip    [slug] => happy-ninja-dish    [date_created] => WC_DateTime Object        (            [utc_offset:protected] => 0            [date] => 2015-12-26 11:53:15.000000            [timezone_type] => 3            [timezone] => Europe/Paris        )    [date_modified] => WC_DateTime Object        (            [utc_offset:protected] => 0            [date] => 2020-07-09 19:25:32.000000            [timezone_type] => 3            [timezone] => Europe/Paris        )    [status] => publish    [featured] =>     [catalog_visibility] => visible    [description] => Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet…[add_to_cart id="53"]    [short_description] => Pellentesque habitant morbi tristique senectus...    [sku] => Gh2563    [price] => 90.50    [regular_price] => 100    [sale_price] => 90.50// … and so on …

汪汪一只猫

有两种方法可以做到这一点,一种是在 foreach 循环中手动过滤元数据数组,另一种是对 wp_postmeta 表进行自定义查询以获取特定键。

慕桂英4014372

以下是有关如何从每个产品获取元数据的Woocommerce 代码参考。另外,这是如何通过下面的键获取元数据的示例:function woo_custom_additional_information_tab_content() {global $product;$product_data = $product->get_meta('_specifications');echo $product_data;}
打开App,查看更多内容
随时随地看视频慕课网APP