Consultar autor do produto – Woocommerce API
-
Bom dia comunidade,
Estou trabalhando com a api do woocommerce e extraindo dados dos produtos que estão cadastrados, mas ele não retorna todos os dados.
Tenho um plugin que gerencia vendedores e gostaria que a consulta aos produtos me retornasse o nome do author do produto.
-
Olá, tudo bem?
Você pode usar a API REST do WordPress e pegar os dados do Product usando o ID que é o ID do post ou, o mais recomendado, alterar a API do WooCommerce para voltar os dados que você quer.
Acho que o filtro woocommerce_rest_prepare_product_object pode ser usado para isso.
Abraços
Tudo bem e com vc? Obrigado pela resposta Mário.
No caso eu teria que alterar a função ou chamar pra aplicar esse filtro?Pensei que teria que alterar a prepare_objects_query
Um filtro é quando você pode alterar um valor via algum callback.
Como a função apply_filters passa 3 parâmetros pro seu filtro, você precisará adicionar um filtro assim:
function example_callback( $response, $object, $request ) { // (maybe) modify $response return $response; } add_filter( 'woocommerce_rest_prepare_product_object', 'example_callback', 10, 3 );
-
Esta resposta foi modificada 7 anos, 9 meses atrás por
Mário Valney.
-
Esta resposta foi modificada 7 anos, 9 meses atrás por
Mário Valney.
E eu crio esse filtro nesse controller mesmo?
Não. Nunca altere os arquivos do Core ou de plugins.
Como você disse que tinha um plugin julguei que era o desenvolvedor, desculpe.
Explicando melhor: o filtro vai servir para alterar o valor que passa por ele, para isso você recebe o próprio valor e mais 2 parâmetros na função do filtro. Com isso tudo, você deve tentar ver como modificar $response para incluir também os valores que você quer receber via API.
Sobre onde incluir o código: você pode incluir esse código no seu Tema ou em algum plugin que tenha criado para esse site e que faça sentido.
Abraços
-
Esta resposta foi modificada 7 anos, 9 meses atrás por
Mário Valney.
-
Esta resposta foi modificada 7 anos, 9 meses atrás por
Mário Valney.
Boa tarde Mario, obrigado pela resposta e pela explicação. Fiz o seguinte filtro:
add_filter( 'woocommerce_rest_prepare_product_object', 'custom_products_api_data', 90, 2 ); function custom_products_api_data( $response, $post ) { // retrieve a custom field and add it to API response $response->data['autor'] = get_post_meta( $post->ID, 'post_author', true ); return $response; }
Ele alterou a resposta e adicionou esse campo, mas ele retornou
["autor"]=> bool(false)
Quer dizer que esse campo pode estar identificado de outra maneira?
Encontrei essa linha no plugin que usei:$seller = get_user_by( 'id', $product->post->post_author );
Que seria a identificação do vendedor.
Olá, basta dar um print_r ou um var_dump no
$post
que você vai ver qual o objeto e as propriedades.Não testei, mas creio que basta usar
$post->post_author
.Agora se quiser o objeto do User pode usar a função get_userdata assim:
$seller_data = get_userdata( $post->post_author );
e aí procura pela documentação no WordPress e/ou dá um print pra ver as propriedades do objeto. Provavelmente$seller_data->display_name
é o que você procura.Onde faço esse print? Não da pra ser no filtro né?
Tem que ser no filtro, não é lá que tem a variável que você quer debbugar?
Vai quebrar, mas beleza: só queremos ver como ela é.“Não quero quebrar o código” – Então podemos usar o log do WordPress para imprimir lá: https://www.elegantthemes.com/blog/tips-tricks/using-the-wordpress-debug-log
Abraços
É que não consigo ver esse dump por causa do erro.
Tende o debug então.
Mas que erro? Você não falou de erro.
Quando coloco o dump no filtro ele retorna no get da api do wc um erro de syntax.
Sim sim. Ele vai imprimir o objeto então a resposta vai estar quebrada, mas vai ser justamente o objeto impresso no meio do JSON.
De qualquer forma, pode sempre tentar o outro modo: imprimir num arquivo de Log.
Mas voltando ao seu problema, isso deve resolver:
$seller_data = get_userdata( $post->post_author ); $response->data['author_name'] = $seller_data->display_name;
Dessa vez retornou NULL, mas os produtos tem pelo menos o administrador como autor.
@taynanps você precisa ir debugando até conseguir a informação que deseja adicionar ao $response.
Infelizmente não tenho como fazer isso por você. Já lhe dei todo o caminho.
Caso tenha dúvidas, é só retornar.
Abraços-
Esta resposta foi modificada 7 anos, 9 meses atrás por
Mário Valney.
-
Esta resposta foi modificada 7 anos, 9 meses atrás por
- O tópico ‘Consultar autor do produto – Woocommerce API’ está fechado para novas respostas.