我如何仅根据WooCommerce中的会话VAR显示具有特定属性的产品



我正在构建一个基于ZipCode/Post Code的商店,您只能在一定的ZipCode范围内看到产品。ZipCode范围是产品本身的属性,以使事情变得更容易。Zipcode的Zipcode存储在会话中(以形式放置),我将如何阻止我的服装商看到无法在其Zipcode中购买的产品?我正在构建一个孩子主题,并希望使用代码解决此问题(没有额外的插件)。

挂钩到woocommerce_product_query,这是一个示例:

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' );

这将从所有停止存档页面中删除它们。如果他们有一个超出其范围的产品的链接,他们仍然可以访问该页面,但是我认为这不是问题吗?这是示例代码,因此请确保您设置元查询和会话正确。这有帮助吗?

最新更新