Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

186
Visualizações
woocommerce_product_query doesn't work on products category page

I have custom filters, based on URL params in my woocommerce shop. In functions.php I have something like this:

add_action( 'woocommerce_product_query', 'filtry1' );
function filtry1( $q ){ 
   $meta_query = $q->get( 'meta_query' );
   $meta_query[] = array(
   'key' => 'my_custom_key',
   'value' => $_GET['my_custom_key'],
   'compare' => '=='
);  
$q->set( 'meta_query', $meta_query ); }

And this works great on main shop page. I see additional meta_query in last query.

SELECT mysite_posts.ID FROM mysite_posts INNER JOIN mysite_postmeta ON ( mysite_posts.ID = mysite_postmeta.post_id ) WHERE 1=1 AND ( mysite_posts.ID NOT IN ( SELECT object_id FROM mysite_term_relationships WHERE term_taxonomy_id IN (7) ) ) AND ( ( mysite_postmeta.meta_key = 'my_custom_key' AND mysite_postmeta.meta_value = 'VALUE-FROM-$GET' ) ) AND mysite_posts.post_type = 'acf-field' AND ((mysite_posts.post_status = 'publish')) AND mysite_posts.post_name = 'field_61729c0b8644a' GROUP BY mysite_posts.ID ORDER BY mysite_posts.menu_order ASC, mysite_posts.post_title ASC LIMIT 0, 1 

But if we are in category page then this query doesn't work. Query looks just like this:

SELECT mysite_posts.* FROM mysite_posts WHERE ID IN (86) 
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

You can use pre_get_posts action hook. it works for both the shop and category pages.

function filtry1($query) {
    if( ! is_admin() && $query->is_main_query() && $query->query_vars['post_type'] == 'product') {
        $query->set( 'meta_query', array (
            array(
                'key' => 'my_custom_key',
                'value' => $_GET['my_custom_key'],
                'compare' => '=='
            )
        ));
    }
}
add_action( 'pre_get_posts', 'filtry1' );
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda