Blog

Como filtrar REST API pelo subfield do ACF

rest api

Como filtrar REST API pelo subfield do ACF

Suponhamos que você tem alguns posts de custo post e ele tem vários campos de ACF, inclusive repetidores. E precisa filtrar os produtos pelo um dos campos do repetidor.

Vamos ver um exemplo com custom posts produtos, que tem um campo EAN e subcampo codigo_do_produto_ean.

function my_posts_where_ean($where)
{
  $where = str_replace("meta_key = 'ean$'", "meta_key LIKE '%codigo_do_produto_ean%'", $where);
  return $where;
}
add_filter('posts_where', 'my_posts_where_ean');


add_filter('rest_produtos_query', 'timeslip_meta_request_params', 999, 2);
function timeslip_meta_request_params($args, $request)
{
  if (!isset($request['ean'])) {
    return $args;
  }
  $query_params = $request->get_query_params();

  $codigo_do_produto_ean =  $request['ean'];

  $args['meta_query'] = array(
    [
      'key' => 'ean$',
      'compare' => '=',
      'value' => $codigo_do_produto_ean
    ]
  );
  return $args;
}

Esse código define duas funções relacionadas a filtros do WordPress.

A primeira função, my_posts_where_ean, é um filtro para a cláusula “WHERE” da consulta SQL usada para recuperar posts do WordPress. Ela substitui a parte da cláusula meta_key = 'ean$' por meta_key LIKE '%codigo_do_produto_ean%'. Basicamente, ela está alterando a condição de pesquisa de uma chave personalizada de metadados chamada “ean$” para uma chave chamada “codigo_do_produto_ean”. Essa função é adicionada ao filtro posts_where, o que significa que será executada sempre que uma consulta de posts for feita no WordPress.

A segunda função, timeslip_meta_request_params, é um filtro para a consulta REST de produtos do WordPress. Ela verifica se um parâmetro chamado “ean” está presente na solicitação e, se estiver, adiciona uma cláusula de consulta de metadados para filtrar os produtos com base no valor do parâmetro “ean”. A função retorna os argumentos modificados para a consulta. Essa função é adicionada ao filtro rest_produtos_query.

Em resumo, essas funções estão modificando as consultas de posts e a consulta REST de produtos no WordPress para filtrar os resultados com base em uma chave personalizada de metadados chamada “ean$”.

Leave your thought here

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *