Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Woocommerce中仅显示基于会话变量的具有特定属性的产品?_Php_Wordpress_Woocommerce - Fatal编程技术网

Php 如何在Woocommerce中仅显示基于会话变量的具有特定属性的产品?

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

我正在建立一个基于zipcode/邮政编码的商店,在这里你只能看到在某个zipcode范围内的产品。zipcode范围是产品本身的一个属性,使事情变得更简单。客户的zipcode存储在会话中(通过表单输入)。如何防止客户看到无法在zipcode中购买的产品?我正在构建一个子主题,并希望使用代码来解决此问题(没有额外的插件)。

钩住woocommerce\u product\u查询,下面是一个示例:

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' );
这将从所有停止存档页面中删除它们。如果他们有一个超出他们范围的产品链接,他们仍然可以访问该页面,但我想这不会是一个问题吧?这是示例代码,因此请确保正确设置了元查询和会话。这有用吗