php – 在Woocommerce商店页面中过滤特定自定义元数据中的产品
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 在Woocommerce商店页面中过滤特定自定义元数据中的产品,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2464字,纯文字阅读大概需要4分钟。
内容图文
![php – 在Woocommerce商店页面中过滤特定自定义元数据中的产品](/upload/InfoBanner/zyjiaocheng/782/1faefad4a9e749acbc798fb4388ab1c9.jpg)
我需要过滤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.
解决方法:
您可以使用挂钩在woocommerce_product_query_meta_query过滤器挂钩中的自定义函数,您可以使用目标meta_key替换下面代码中的_the_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' => 'EXIST'
);
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文件中.经过测试和工作.
内容总结
以上是互联网集市为您收集整理的php – 在Woocommerce商店页面中过滤特定自定义元数据中的产品全部内容,希望文章能够帮你解决php – 在Woocommerce商店页面中过滤特定自定义元数据中的产品所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。