Suporte » Desenvolvendo com WordPress » Criação de plugin para consulta de API externa com recomendações de produto

  • Pessoal,

    Quero criar um plugin com basicamente 2 pontos de customização:

    1. Quando o usuário vê um produto, adiciona no carrinho ou compra um produto, gostaria renderizar uma tag javascript na página.

    2. Na hora que o usuário vê produtos, seja na home, página de produto, carrinho ou confirmação de compra, queria realizar uma chamada http via “backend” (e não via javascript) para pegar uma lista de IDs de produto e enviá-los para a tela.

    Não conheço nada de wordpress nem de woocommerce mas tenho bastante experiência com desenvolvimento. Alguém consegue me indicar algum esqueleto de plugin e que tipo de funcionalidades de plugin atenderiam os 2 cenários que eu mencionei?

    Desde já, obrigado!

    At,

    • Este tópico foi modificado 6 anos, 10 meses atrás por Mário Valney.
Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Olá, tudo bem?

    Eu utilizo esse boilerplate:
    https://github.com/Vizir/wordpress-plugin-boilerplate

    Sobre quais “funcionalidades” vai usar… bem… aconselho você a estudar o WordPress primeiro. Sem entender os paradigmas dele fica difícil se planejar para desenvolver algo legal.

    Recomento primeiro instalar o WP e o Woo e mexer por um tempinho para ver o negócio funcionando. Navegar pela interface como usuário vai ajudar a saber o que é cada coisa que vai encontrar pela frente.

    Aqui é o segundo passo:

    Home

    Aí você vai ter o handbook de temas e plugins. O de temas é legal para entender um pouco como funciona a parte da interface. O de plugins vai ser sua bíblia… hahahha

    Aliás… o que eu disse pode ser complementado/substituído pela leitura dessa primeira página do handbook:
    https://developer.wordpress.org/plugins/

    Entendendo como é um plugin e principalmente o que são os hooks (ações e filtros) vem o passo 3 que é entender o Woo. Você pode ler a documentação oficial. “Getting Started” vai ajudar a entender os conceitos do Woo e depois pode ir pro “Codex” ver a parte de desenvolvimento. Principalmente “Extending“.

    No mais vai ser desenvolver… minha dica é sempre procurar por hooks nas “coisas” que você quer mexer, pois o Woo é bastante pensado para ser alterado dessa forma.

    ## Agora entrando um pouco no que você disse:

    No item 2 você disse:

    chamada http via “backend” (e não via javascript)

    Não entendo como funcionaria… afinal o back-end só sabe que algo aconteceu no front-end se o JS avisar… Para isso o WordPress tem uma API Ajax muito boa:
    https://codex.wordpress.org/AJAX_in_Plugins

    Abraços

    Criador do tópico felipecruz

    (@felipecruz)

    Obrigado pela ajuda. Vou olhar todos os links que você passou.

    Sobre a integração via “backend”: quando o usuário acessa uma página de produto, por trás é executado um script php que gera o html da página. Certo?

    Se for isso mesmo, nesse script php eu quero incluir uma chamada http para uma api externa e usar o retorno dessa API para mudar os produtos exibidos na página.

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Entendi. Sim… dá pra fazer (por cURL, por exeplo). Mas não recomendo.

    Acho que fica melhor para o usuário carregar a página e trazer esses produtos de forma assíncrona. Num projeto em que estou trabalhando (que infelizmente não é WordPress) estamos carregando vitrines da RichRelevance e assim ficou melhor, pois antecipa a resposta do servidor.

    Abraços

    Criador do tópico felipecruz

    (@felipecruz)

    Entendo o seu ponto. Em outras linguagens (realmente não conheço php) é fácil fazer uma chamada assíncrona no backend também pra não travar o processamento do servidor. Dei uma pesquisada aqui e existem formas de usar o php + curl pra fazer uma chamada assíncrona mas preciso testar.

    O meu problema, no final das contas, é que eu preciso criar um plugin que funcione independente do tema.

    O problema de carregar por javascript é que eu vou ter que ter um código em JS que renderiza os produtos. Criar esse código genérico, pra qualquer template, é muito difícil. A opção que restaria é na parte de config do plugin permitir que o usuário coloque um template que usa alguns placeholders pra gerar um html igual ao do resto da loja mas isso acaba tirando o “plug-and-play”.

    Mas obrigado pelos esclarecimentos.. estão sendo muito úteis.

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Existem bibliotecas para isso, mas vai de Ajax que é mais fácil e melhor hahahaha

    O meu problema, no final das contas, é que eu preciso criar um plugin que funcione independente do tema.

    Não é algo simples. Independente de ser ajax ou não vai precisar ter o “template” do item do produto.

    A gama de temas é gigante e nem sempre os desenvolvedores seguem as boas práticas, seja do WordPress, seja do WooCommerce (já que é o nosso foco).

    Mas vamos trabalhar no “ideal”, ou seja, o tema está bem feito.
    Para isso, basta seguir a documentação do WooCommerce sobre templates:
    https://github.com/woocommerce/woocommerce/tree/release/3.0/templates/loop

    E aí achamos o template de archive de produtos.

    Como pode ver, lá dentro tem um Loop que é basicamente a query pra buscar os produtos (dá uma olhada na classe WP_Query para criar loops personalizados, já que provavelmente vai receber do servidor externo apenas os IDs dos produtos ou algum metadado ou algo que os identifique).

    Basta criar um loop igual, afinal se não funcionar pro seu plugin não funciona pro WooCommerce no geral.

    E aí vemos que o template de cada produto na listagem é:
    <?php wc_get_template_part( 'content', 'product' ); ?>

    Então se o tema não tiver um template content/product.php ele vai pegar o fallback do Woo seja para a listagem, seja para o seu plugin.

    No mais, falta só o usuário poder cadastrar um identificador para a listagem de produtos (e aí o JS faz a mágica).
    Afinal a vitrine seria colocada em algum lugar.

    Abraços

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • O tópico ‘Criação de plugin para consulta de API externa com recomendações de produto’ está fechado para novas respostas.