Dividir elementos da função "tainacan_the_metadata()"

Olá,

Gostaria de uma ajuda com o seguinte tópico, gostaria de separar alguns metadados em colunas diferentes, porém não consigo fazer esta separação utilizando a função tainacan_the_metadata(), tentei passar parâmetros dentro de um $args porém não sei como localizar as taxonomias cadastradas.

Por exemplo, tenho 6 taxonomias diferentes cadastradas pela coleção:

  • pais-de-producao
  • tamanho-padrao
  • estado-de-conservacao
  • data
  • descricao-adicional
  • resumo

Gostaria de separar estes itens em 3 colunas, colocando 2 taxonomias em cada uma.

Como posso extrair essas taxonomias específicas baseadas nos slugs acima?

Muito obrigado.

Obrigado.

1 Like

Olá @Matheus_Guimaraes, tudo bem? Seja bem vindo ao nosso fórum!

Então, isto que você está pedindo é a grande razão pela qual estamos trabalhando no recurso chamado “Sessões de Metadados” para a próxima versão (0.19). Com ela ficará mais fácil ter uma separação semântica e visual de diferentes agrupamentos de metadados. Infelizmente, enquanto as sessões não estão prontas, o caminho é mais canseira mesmo. Para o que você está precisando, eu vejo duas estratégias:

  1. Chamar a função tainacan_the_metadata() mais de uma vez, passando no atributo metadata__in ou metadata__not_in o array de IDs ou array de slugs dos metadados desejados. Daí você consegue colocar, por exemplo, os metadados em DIVs diferentes para estilizá-los. Isto foi usado extensamente neste site aqui: Hyperbolic – FILE FESTIVAL
  2. Fazer uso das classes já existentes ao redor dos metadados para estilizar eles diferentemente. Se você olhar bem, há uma <div> ao redor de cada metadado que tem uma classe relacionada ao slug deles (se não me engano há um parâmetro pra isso na função). Você pode então no seu CSS determinar regras como column-span: 2, ou width: 100%, etc, a depender do que você está buscando.

Sei que não é o ideal, mas acredite, vai ficar beeeem melhor quando tivermos as sessões. :wink:

Perfeito, até pretendia fazer desta maneira mesmo:

Chamar a função tainacan_the_metadata() mais de uma vez, passando no atributo metadata__in ou metadata__not_in o array de IDs ou array de slugs dos metadados desejados. Daí você consegue colocar, por exemplo, os metadados em DIVs diferentes para estilizá-los.

Porém, não consegui descobrir como utilizar corretamente os atributos ‘metadata’, metadata__in ou metadata__not_in.

Você poderia colar um exemplo aqui, com um uso similar, utilizando por exemplo a taxonomia “pais-de-producao”.

O título e organização ficariam por conta de html e css, mas eu precisaria saber como extrair por exemplo somente a tax “pais-de-producao” e o seu link.

Muito obrigado pela ajuda.

A tainacan_the_metadata() “busca” por metadados seguindo uma das três estratégias:

  1. Todos o metadados do item atual, se vc não passar metadata, metadata__not_in, nem metadata__in;
  2. Um metadado específico, se você passar o objeto, ID, ou slug dele no metadata;
  3. Busca nos metadados do item atual, filtrando por metadata__not_in, ou metadata__in;

No seu caso vai ser o terceiro. Você precisa passar o ID ou slug dos metadados desejados. Se está fazendo isso dinamicamente, eu recomendaria fazer uma requisição para o repositório de metadados, algo como o que é feito aqui:

E iterar neles para ver de que tipo eles são, qual seu slug, etc. Se vc está fazendo um código específico para uma coleção e seus metadados, você pode descobrir o ID deles pela interface administrativa mesmo. Na página dos metadados da coleção, clique em editar um metadado que você verá o ID do mesmo na URL. Assim vc pode só anotar eles e passar pra função no metadata__in;

Só um comentário, estamos falando aqui de metadados e não de taxonomias. No caso, na página do item, o que você vai mostrar são os valores do metadado X (tipo taxonomia) que são basicamente termos da taxonomia Y. O slug da taxonomia e do metadado que a usam é diferente.

Fez sentido?

Obrigado Mateusn

Meu conhecimento em programação é um pouco limitado. O que tentei fazer foi algo tipo isto, onde o ID da taxonomia foi o termo que passei no parametro metadata__in:

$args = array(
                    'display_slug_as_class' => true,
                    'before_title' => '<div><h4>',
                    'after_title' => '</h4>',
                    'before_value' => '<p>',
                    'after_value' => '</p></div>',
                    'exclude_core' => true,
                    'metadata__in' => 623
                );

tainacan_the_metadata( $args );

Como eu poderia adaptar meu código acima para que ele se comporte da maneira que pensei? Minha ideia é que o código acima retornasse apenas o título da taxonomia em um h4, excluindo os elementos core da função e fizesse o display como já é feito na listagem completa, mas filtrando apenas a taxonomia específica:

Estado de Conservação
Bom

Novamente, muito obrigado pela ajuda.

Umm, acho que a primeira questão aí é passar um array ao invés do inteiro:

'metadata__in' => [ 623 ]

Outra é verificar se este 623 é o ID do metadado tipo Taxonomia e não da Taxonomia, como comentei antes.

1 Like

Tentei em um array, também não funcionou. A função não retorna nada.

Segue de onde tirei o id:

Então, isso que está errado. Este é o ID da Taxonomia, mas o que você mostraria seria o Metadado que usa esta Taxonomia. Vá para a página dos metadados (seja do repositório, ou da coleção, se for o caso) e clique no botão de editar o metadado que está usando esta Taxonomia:

1 Like

O que a dislexia não faz com a gente…

MUITO obrigado, “worked like a charm”.

Valeu mesmo Mateus, tenha um ótimo dia!

2 Likes

627, não 623 :wink:

1 Like

Hehhehe tranquilo!

Precisando de mais ajuda aí, só abrir um novo tópico :fist_right:t3: :eight_pointed_black_star: :fist_left:t3:

1 Like