从具有特定元数据的类别中获取所有 WooCommerce 产品
Get all WooCommerce products from a category that have specific meta data
我的自定义 post 类型有一个自定义元:
$arr = array('foo' => 'yes',
'featured_enabled' => 123,
'something' => 'abc',
);
update_post_meta($post_id, 'fvp_featured_meta', $arr );
我的问题是如何从 woocommerce 中的特定类别 ID 中获取所有具有此元 (fvp_featured_meta) 的产品? (并非所有 post 都有此元数据)
您可以尝试使用 wc_get_products()
函数来获取具有属于特定产品类别的特定元数据的产品,如下所示:
$category_term_slugs = array('clothing'); // <== Define your product category
// Get an array of WC_Product Objects
$products = wc_get_products( array(
'limit' => -1,
'status' => 'publish',
'meta_key' => 'fvp_featured_meta',
'meta_compare' => 'EXISTS',
'category' => $category_term_slugs,
) );
echo '<ul>';
// Loop Through products array
foreach( $products as $product ) {
$product_name = $product->get_name();
$meta_array = $product->get_meta('fvp_featured_meta'); // Get meta data (array)
$meta_output = []; // Initializing
if( ! empty( $meta_array ) ) {
// Loop through custom field array key/value pairs
foreach( $meta_array as $key => $value ) {
$meta_output[] = $key . ': ' . $value;
}
$meta_output = ' | ' . implode(' | ', $meta_output);
}
echo '<li>' . $product_name . $meta_output . '</li>';
}
echo '</ul>';
应该可以。
我的自定义 post 类型有一个自定义元:
$arr = array('foo' => 'yes',
'featured_enabled' => 123,
'something' => 'abc',
);
update_post_meta($post_id, 'fvp_featured_meta', $arr );
我的问题是如何从 woocommerce 中的特定类别 ID 中获取所有具有此元 (fvp_featured_meta) 的产品? (并非所有 post 都有此元数据)
您可以尝试使用 wc_get_products()
函数来获取具有属于特定产品类别的特定元数据的产品,如下所示:
$category_term_slugs = array('clothing'); // <== Define your product category
// Get an array of WC_Product Objects
$products = wc_get_products( array(
'limit' => -1,
'status' => 'publish',
'meta_key' => 'fvp_featured_meta',
'meta_compare' => 'EXISTS',
'category' => $category_term_slugs,
) );
echo '<ul>';
// Loop Through products array
foreach( $products as $product ) {
$product_name = $product->get_name();
$meta_array = $product->get_meta('fvp_featured_meta'); // Get meta data (array)
$meta_output = []; // Initializing
if( ! empty( $meta_array ) ) {
// Loop through custom field array key/value pairs
foreach( $meta_array as $key => $value ) {
$meta_output[] = $key . ': ' . $value;
}
$meta_output = ' | ' . implode(' | ', $meta_output);
}
echo '<li>' . $product_name . $meta_output . '</li>';
}
echo '</ul>';
应该可以。