Suporte » Temas » Como salvar dados de um Custom Post Type em suas próprias tabelas?

  • Resolvido nerooficial

    (@nerooficial)


    Olá pessoas, i’m back.

    Estou desenvolvendo um tema free para melhorar minhas habilidades com wp e agora tenho uma grande dúvida, como posso salvar dados de um “custom post type” em sua própria tabela?

    Por exemplo, o WooCommerce tem várias tabelas, eu tentei analisar o código dele mas acabei me perdendo em várias funções.
    Daí gostaria de saber, como eu posso por exemplo, salvar os dados de três custom post types em tabelas distintas para cada um.

    Ex: criei 3 CPTs diferentes, sendo (cliente, produto, pedido), daí pra cada um criei sua própria tabela com informações básicas.
    Ex:
    $wpdb->prefix . 'clientes', $wpdb->prefix . 'produto' e $wpdb->prefix . 'pedidos'

    cada tabela tem seus próprios campos, como id, nome, descrição, etc…

    Gostaria de saber como posso criar campos no painel do WP para cada CPT e como capturar o valor desses CPTs e inserir na própria tabela, a exemplo do woocommerce.

    Até então eu só sei trabalhar com o add_option e seus similares.
    Fico muito grato se alguém puder me ajudar a achar uma luz.

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • Criador do tópico nerooficial

    (@nerooficial)

    Até o momento eu já consegui, por exemplo, criar as tabelas no banco de dados utilizando as instruções do codex, mas ainda não sei como posso inserir e capturar valores dessas tabelas e levar para o painel do wp ou até mesmo para o frontend do tema.

    A imagem é o modelo das tabelas que tenho.
    Tabelas personalizadas do Tema

    Outra informação, estou criando estas tabelas diretamente pelo tema (functions.php), não através de plugin.

    • Esta resposta foi modificada 6 anos, 10 meses atrás por nerooficial.
    Moderador Leo Baiano

    (@leobaiano)

    Cara, se você estiver falando realmente de CPT não vai precisar criar tabela nenhuma no banco de dados. Os CPTs são tipos de post e os dados deles são salvos nos mesmos lugares que os outros posts, eles ficam na tablepostse a diferença é que na colunapost_type` vai ficar registrado o slug do CPT que você criou.

    Dê uma olhada nos registros da tabela posts, você vai ver que tem page por lá e deve ter o slug de outros CPT`s também.

    O próprio WordPress cuida do CRUD pra você. Por exemplo, se você criar um CPT chamado receitaso WordPress já vai criar um menu no painel administrativo chamado receitas com a opção de adicionar um novo post. Para exibir os posts desse CPT no tema você vai fazer da mesma forma que exibiria qualquer outro CPT.

    Só pra constar, não sei de quais tabelas do WooCommerce exatamente você está falando, mas para s CPT por exemplo ele não cria novas tabelas no WordPress, produtos por exemplo é um CPT. As tabelas que ele cria são para outras coisas que não são CPT ou talvez para relacionamento de dados.

    Criador do tópico nerooficial

    (@nerooficial)

    Então Léo, a minha dúvida era essa, por exemplo, eu tô montando montando esse tema para entender mesmo como fazer esse tipo de interligação, pra mais pra frente montar um tema mais específico e com mais funcionalidades.

    Agora o que eu quero aprender é como por exemplo, relacionar esses dados entre os CPTs, exemplo: O pedido tem como informações, o id do cliente e do produto.
    O produto tem suas próprias informações, que pelo que entendi então, pode ser feito através dos custom_fields do WP. Só que a parte onde eu travei é o relacionamento entre essas entidades. Deu uma bugada em como publicar um pedido que precisa obrigatoriamente ter o cliente e o produto armazendos numa coluna. saca?

    Não sei se expliquei bem.
    A propósito, muito obrigado pela ajuda meu rei. vc é foda!

    • Esta resposta foi modificada 6 anos, 10 meses atrás por nerooficial.
    Moderador Leo Baiano

    (@leobaiano)

    Você pode criar um custom field para salvar o ID ou objeto do post e fazer esse relacionamento. Por exemplo, digamos que pedidos, clientes e produtos são 3 CPT`s distintos, então no CPT pedidos você cria um custom field chamado cliente e outro chamado produtos, ai na hora de criar um post do tipo pedido você grava o ID do cliente no custom field cliente e o ID dos produtos no custom field chamado produtos.

    O plugin ACF pode te ajudar com essa missão, ele vai te ajudar a criar os custom fields e recuperar os dados dos campos relacionados.

    Um detalhe importante, o CPT não faz parte do tema, ou seja, não crie eles no functions.php crie um plugin para isso. Veja, o CPT faz parte das regras de negócio do site, enquanto o tema faz parte da camada visual, são coisas distintas. Utilizando o seu caso como exemplo, você criou um site para venda de produtos, ai tem os 3 CPT`s que falou acima. No dia que você fizer um relayout do site o visual vai mudar, porém os 3 CPTs precisam permanecer porque eles não faziam parte do layout que você está substituindo, eles fazem parte do site.

    • Esta resposta foi modificada 6 anos, 10 meses atrás por Leo Baiano.
    Criador do tópico nerooficial

    (@nerooficial)

    Saquei Léo. Muito obrigado, vou estudar isso agora mesmo. Obrigado mesmo pela ajuda, a esta hora de um domingo HAHA!

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • O tópico ‘Como salvar dados de um Custom Post Type em suas próprias tabelas?’ está fechado para novas respostas.