Tainacan, ACF, novos campos e acesso a template

Olá a todos

Eu trabalho com o ACF no WordPress. Dessa forma posso criar campos para conteúdo específico, referencia-los e exibi-los onde preciso, incorporando-os em templates.

Como acesso e referencio campos como esse em templates do Tainacan em outro tema? Costumo usar o GeneratePress, que é muito leve e versatil.

Tenho tambem um caso de uso bem específico: preciso cadastrar links para pontos de entrada para um player de áudios. E tambem referenciar/exibir audios anexados em conteudo do Tainacan em outras paginas e widgets. Isso eh possivel? Com uma WPQuery, por exemplo?

Toda ajuda é bem-vinda

Olá Birous, tudo bem? Seja bem vindo!

Eu sugeriria dividir sua questão em tópicos diferentes pra podermos discutir melhor. Começando com a questão dos ACFs, não sei se entendi bem o que você está precisando.

Vou te adiantar que as coleções e os itens do Tainacan são custom_post_types por trás dos panos, então é possível tirar proveito de blocos e templates pensados para eles. A vantagem de se ter um tema compatível (hoje em referenciamos principalmente o Tainacan Interface e o Blocksy, o último com suporte via plugin) é que eles tiram melhor proveito usando algumas funções que renderizam interfaces mais complexas, já preparadas pelo plugin - vide a lista de itens com busca facetadas e a galeria de mídia para os anexos.

Dito isso, temos um pouco de documentação sobre como criar estes temas compatíveis: Tainacan Wiki

E eu estou a disposição para ajudar caso queira fazer algo com o Generatepress!

Perfeita sugestão, Mateus. Vou separar em tópicos. Realmente vai ficar melhor.

O GeneratePress é um tema MUITO bom para devs e frontenders com noção de programação em WP. Vai ser muito bom tentar criar suporte para o Tainacan nele.

Crio sites muito rapidamente no GP, e não sei se teria essa agilidade no Blocksy, por exemplo. Além do que o GP tem suporte para hooks nativamente (na versão paga).

Massa, eu já brinquei um pouco com ele, é realmente muito bom. É sempre um desafio encontrarmos um tema que possa atender às possíveis demandas de cada um. Mas se você está disposto a trabalhar com isso, podemos marcar uma conversa particular para eu te explicar o caminho das pedras e o que geralmente espera-se de um tema “Com suporte ao Tainacan”.

Mas sua dúvida com os ACFs aqui era qual mesmo? Eu realmente não saquei rsrs

Agora que está mais claro como e onde acessar os templates do Tainacan, acho que fica mais facil rseolver os campos de ACF. Vou ver se consigo. Caso sim, caso nao, retorno os resultados aqui, ok?

Tranquilo, tamo aqui!

Olá, @mateus.m.luna
Comecei os testes e estudos aqui, mas sem muito sucesso. Pode me ajudar?

Criei uma pasta tainacan na raiz do tema e dentro dela uma single-items.php. Eu queria conseguir reproduzir a estrutura da single usando as helpers porque preciso inserir outros campos/dados entre os que são gerados pelo Tainacan. Mas nenhuma helper funcionou. Alias, só duas. Devo estar fazendo algo errado, claro…

Olá @Birous. Tranquilo, vamos por partes. Quais que funcionaram e quais que não?

A primeira dica que eu daria seria dar uma conferida nos códigos que temos já, pra servir de referência:

Você vai querer usar o template do tema para posts, com exceção do miolo em si, onde o the_content vai ser substituído pelo uso das funções helpers. São três coisas que você geralmente vai querer mostrar:

  1. O Documento do Item;
  2. Os Anexos do Item (possivelmente integrados num mesmo carrossel do Documento do Item);
  3. Os metadados;

Os metadados é mais de boa. Basta usar a função tainacan_the_metadata():

Passando os parâmetros que quiser.

Já o Documento e Anexos são mais complexos. Embora tenha o tainacan_the_content lá prontinho pra você, geralmente você vai querer exibir este documento num carrossel com os anexos e com um lightbox… por isso fizemos a tainacan_get_the_media_component.

Ela é mais complexa justamente por tentar cobrir as várias opções que os temas podem querer atribuir. Por isso sugiro fortemente ver o código fonte dos outros pra te ajudar.

Qualquer dúvida pode dar uma grito aqui!

Salve! Estou progredindo (devagar). Consegui usar o tainacan_the_metadata(), mas nao encontrei maneira de usar o slug ou ID de cada uma das metadatas criadas.

Tentei usar tainacan_the_content(), mas nada apareceu.

Testei tainacan_get_the_media_component(), mas tambem não soube usar…

Beleza! Então agora, quando você entra na página do Item, os metadados estão sendo todos listados?

Em que sentido usar?

Só pra me certificar aqui, você tá chamando a função no template do single de itens né? E você está acessando a página do item no tema? O seu item tem algum documento?

Sim, sao todos listados

Eu quis dizer q nao consegui achar o slug/ID dos itens/metadados q criei. A função retorna todos

O GeneratePress tem uma especie de include no template do single. Sobreescrevi a estrutura criando uma pasta tainacan com um arquivo single-items.php que chama um template de conteudo (content-item.php). Dentro do content-item.php comentei o the_content() e chamei as funcoes tainacan.

@mateus.m.luna, tem alguma forma de eu recuperar essas IDs com alguma funcao para listar cada metadado?

Em algum momento acredito q vou precisar criar um campo para uso de maneira bem especifica…

Oi @Birous tem sim.

// o post atual é um item do Tainacan?
if ( !$this->is_post_an_item($post) ) {
	return;
}
// Instanciar como um objeto ITEM
$item = new Entities\Item($post);

$item->get_metadata();

Neste objeto você tem acesso aos IDs dos metadados.

Mas queria entender o que está pegando com seu documento e anexos… dando um var_dump neste objeto $item, o que aparece?

1 curtida

@mateus.m.luna, usei esse codigo no template e nada acontece. Dependendo de como uso, ate some o conteudo da pagina

Uhmm então me parece que o $post neste seu caso não é um item! Tem algo errado de fato. Se você der um var_dump($post), o que aparece? Você pode compartilhar um pouco do seu código pra me ajudar a debugar?

@mateus.m.luna,

Uma das propriedades do var_dump($post) foi justamente [“post_type”]=> string(15) “tnc_col_28_item”
Me parece entao q o post é um item Tainacan, nao?

O codigo eh um montador normal de pagina do WordPress. Quer q cole tudo aqui?

Deu certo! Mudei Entities\Item para Tainacan\Entities\Item e printou o dump do $item

Opaaa bom demais!