我如何仅根据Woocommerce中的会话变量显示具有特定属性的产品?

时间:2017-03-01 19:31:40

标签: php wordpress woocommerce

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

1 个答案:

答案 0 :(得分:1)

挂钩到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' );

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