首页 文章

通过$ _GET过滤WooCommerce产品

提问于
浏览
-1

我需要做的是在URL中为属性应用值,因此只显示与该属性匹配的产品 . 我不想在页面上做任何小部件或其他可见的过滤器 .

为此我假设我需要使用webhooks中的一个,并过滤掉即将显示的所有产品 .

任何人都可以建议哪种钩子在这种情况下最好,并简单说明触发功能将如何返回新的产品阵列?

提前致谢!

注意:我还想查询一个自定义属性,它没有任何术语,只是一个直接键/值 .

UPDATE 1 我'm playing with two techniques; one is very reliable, and that' s基本上用来:

if (!$product->attributes || $product->get_attribute( 'testKey' ) != $_GET["testKey"]) {
    //return;
}

content-product.php 的顶部,但当然WooCommerce仍然会说find_posts的原始值 . 当然不理想 .

我发现这样的事情应该在 functions.php 中起作用:

function testFilter($meta_query) {
    $meta_query[] = array (
        'key'     => 'testKey',
        'value'   => 'testVal',
        'compare' => '='
    );
    return $meta_query;
}
add_filter( 'woocommerce_product_query_meta_query', 'testFilter', 9 );

除非它没有,返回没有结果,如果我使用LIKE,EXISTS等无关紧要 . 我使用它错了吗?

UPDATE 2 我不会说这是答案,因为这似乎只在一组自定义属性中寻找一个值,但this result有所帮助 .

1 回答

  • 0
    add_filter( 'wpv_filter_query', 'wpv_filter_color_attribute' );
    function wpv_filter_color_attribute( $query_args) { 
       $tax_query = array();
       $tax_query['taxonomy'] = 'pa_size';
       $tax_query['field'] = 'term_id';
       $tax_query['terms'] = $_GET['pa_size'];
       $query_args['tax_query'] = array($tax_query);
       return $query_args;
     }
    

    您应该使用您的属性分类标记替换“pa_size”,并使用正确的URL参数替换$ _GET ['pa_size'] .

    您可以使用上述代码按属性过滤产品 . 我没试过这个 . 但是,这可能会对你有所帮助 .

相关问题