Php 如何在Woocommerce中仅显示基于会话变量的具有特定属性的产品?
我正在建立一个基于zipcode/邮政编码的商店,在这里你只能看到在某个zipcode范围内的产品。zipcode范围是产品本身的一个属性,使事情变得更简单。客户的zipcode存储在会话中(通过表单输入)。如何防止客户看到无法在zipcode中购买的产品?我正在构建一个子主题,并希望使用代码来解决此问题(没有额外的插件)。钩住woocommerce\u product\u查询,下面是一个示例:Php 如何在Woocommerce中仅显示基于会话变量的具有特定属性的产品?,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我正在建立一个基于zipcode/邮政编码的商店,在这里你只能看到在某个zipcode范围内的产品。zipcode范围是产品本身的一个属性,使事情变得更简单。客户的zipcode存储在会话中(通过表单输入)。如何防止客户看到无法在zipcode中购买的产品?我正在构建一个子主题,并希望使用代码来解决此问题(没有额外的插件)。钩住woocommerce\u product\u查询,下面是一个示例: function so_42540393_product_query( $q ){ if(i
function so_42540393_product_query( $q ){
if(isset($_SESSION['ZIPCODE-RANGE'])){
$meta_query = $q->get( 'meta_query' );
$meta_query[] = array(
'key' => 'CUSTOM_META_KEY',
'value' => $_SESSION['ZIPCODE-RANGE'],
'compare' => 'BETWEEN'
);
$q->set( 'meta_query', $meta_query );
}
}
add_action( 'woocommerce_product_query', 'so_42540393_product_query' );
这将从所有停止存档页面中删除它们。如果他们有一个超出他们范围的产品链接,他们仍然可以访问该页面,但我想这不会是一个问题吧?这是示例代码,因此请确保正确设置了元查询和会话。这有用吗