gpt4 book ai didi

php - 从 Woocommerce 商店页面中的特定自定义元数据过滤产品

转载 作者:可可西里 更新时间:2023-10-31 23:27:02 26 4
gpt4 key购买 nike

我需要过滤 WooCommerce 商店页面,并且只想显示需要自定义产品元数据的产品。这是我在 archive-product.php 中找到的内容:

/**
* Hook: woocommerce_before_shop_loop.
*
* @hooked wc_print_notices - 10
* @hooked woocommerce_result_count - 20
* @hooked woocommerce_catalog_ordering - 30
*/
do_action( 'woocommerce_before_shop_loop' );
woocommerce_product_loop_start();
if ( wc_get_loop_prop( 'total' ) ) {
while ( have_posts() ) {
the_post();
/**
* Hook: woocommerce_shop_loop.
*
* @hooked WC_Structured_Data::generate_product_data() - 10
*/
do_action( 'woocommerce_shop_loop' );
wc_get_template_part( 'content', 'product' );
}
}
woocommerce_product_loop_end();

那么如何在这部分传递过滤器值以仅显示具有元键 X 和值 Y 的产品?

更新

我已经按照 Loic 所说的方式进行了尝试,但是当我检查一个以上的元值时,它导致了问题,我看不到任何产品:

add_filter( 'woocommerce_product_query_meta_query', 'show_only_products_with_specific_metakey', 10, 2 );
function show_only_products_with_specific_metakey( $meta_query, $query ) {
// Only on shop pages
if( ! is_shop() ) return $meta_query;

$meta_query[] = array(
'key' => '_the_meta_key',
'value' => 'the_value',
'compare' => 'EXIST'
);

//Don't works when adding the second one
$meta_query[] = array(
'key' => '_the_meta_key',
'value' => 'the_value_2',
'compare' => 'EXIST'
);


return $meta_query;
};

我有两个产品:

  • 产品 A -> 具有 the_value_2
  • 产品 B -> 具有 the_value

所以我在这里期待这两款产品。当我删除第二个 meta_query 时,我只得到产品 B。

最佳答案

您可以使用 Hook 在 woocommerce_product_query_meta_query 过滤器 Hook 中的自定义函数,您将在下面的代码中将 _the_meta_key 替换为您的目标 meta_key :

add_filter( 'woocommerce_product_query_meta_query', 'show_only_products_with_specific_metakey', 10, 2 );
function show_only_products_with_specific_metakey( $meta_query, $query ) {
// Only on shop pages
if( ! is_shop() ) return $meta_query;

$meta_query[] = array(
'key' => '_the_meta_key',
'compare' => 'EXISTS'
);
return $meta_query;
}

代码进入事件子主题(或事件主题)的 function.php 文件。测试和工作。


补充(与您的最后评论相关):

要使其适用于多个元值,您需要使用 'compare' => 'IN',例如:

add_filter( 'woocommerce_product_query_meta_query', 'show_only_products_with_specific_metakey', 10, 2 );
function show_only_products_with_specific_metakey( $meta_query, $query ) {
// Only on shop pages
if( ! is_shop() ) return $meta_query;

$meta_query[] = array(
'key' => '_the_meta_key',
'value' => array('L','XL'),
'compare' => 'IN'
);
return $meta_query;
}

代码进入事件子主题(或事件主题)的 function.php 文件。测试和工作。

WP meta_query documentation

关于php - 从 Woocommerce 商店页面中的特定自定义元数据过滤产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53631542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com