wordpress 如何在WooCommerce中获取产品特定的 meta数据

bzzcjhmw  于 2023-06-21  发布在  WordPress
关注(0)|答案(3)|浏览(213)

我正在使用WooCommerce,并希望获得专门针对该产品的 meta密钥,例如。价格、颜色等。但问题是,我不想得到所有的 meta密钥,但只有那些需要的。例如,我不需要_edit_last_edit_lock_wc_review_count...并且仅需要pricecolor(作为示例)。如果它是一个不重要的网页,但我不想在网页上显示它们,但我想将它们作为json发送到其他地方。因此,数据必须经过过滤。顺便说一句,它是在插件,我想与他人分享,所以我不能/不应该访问他们的WooCommerce API。
我的代码获取所有 meta键(但我只想要其中的一部分):

$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'
    .
    .
    .
)
carvr3hs

carvr3hs1#

有多种方式取决于你想要的:
1).您需要在WC_Product对象上使用WC_Product methods来获取产品属性:

$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).对于特定或自定义的产品 meta数据,您将使用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_Product对象上使用WC_Data方法get_data()来获取数组中未受保护的 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 product unprotected meta data in an array
$product_data = $product->get_data();

// Output row data
echo '<pre>'. print_r( $obj, true ) . '</pre>';

你会得到类似(extract)的东西:

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 …
pqwbnv8z

pqwbnv8z2#

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

h4cxqtbf

h4cxqtbf3#

这里是Woocommerce代码参考关于如何从每个产品中获取元数据。
此外,下面是如何通过键获取元数据的示例:

function woo_custom_additional_information_tab_content() {

global $product;

$product_data = $product->get_meta('_specifications');

echo $product_data;

}

相关问题