X

Obter Valor de Campo Personalizado com Shortcode

Snippets por IsItWP

Você quer obter valores de campos personalizados usando um shortcode? Embora provavelmente exista um plugin para isso, criamos um trecho de código rápido que você pode usar para obter o valor de um campo personalizado com um shortcode no WordPress.

Instruções:

Tudo o que você precisa fazer é adicionar este código ao arquivo functions.php do seu tema ou a um plugin específico do site:

add_shortcode('field', 'shortcode_field');

function shortcode_field($atts){
     extract(shortcode_atts(array(
                  'post_id' => NULL,
               ), $atts));
  if(!isset($atts[0])) return;
       $field = esc_attr($atts[0]);
       global $post;
       $post_id = (NULL === $post_id) ? $post->ID : $post_id;
       return get_post_meta($post_id, $field, true);
}
 [field "my_key"]
 [field "my_key" post_id=1]

Observação: Se esta é a sua primeira vez adicionando snippets de código no WordPress, consulte nosso guia sobre como adicionar snippets de código corretamente no WordPress, para não quebrar acidentalmente seu site.

Se você gostou deste trecho de código, considere conferir nossos outros artigos no site, como: 10 melhores plugins de depoimentos do WordPress para adicionar prova social e como criar um formulário de contato no WordPress.

Comentários   Deixe uma resposta

  1. O meu apenas exibe a palavra Array?

  2. Olá, excelente snippet 🙂

    É possível mostrar uma mensagem de erro quando o arquivo personalizado não existe?

    É difícil identificar erros quando não há nenhuma saída.

    Atenciosamente
    Rudi

  3. Alguma ideia de como exibir um campo personalizado como um link?
    Eu tentei isto: teste mas não está funcionando. Obrigado.

  4. Olá,

    Está funcionando bem para campos personalizados de plugins, obrigado! Mas como renderizar campos padrão como “Título” ou “Resumo”?

  5. muito obrigado. bom trabalho

    1. Olá Kasra, de nada. Não se esqueça de nos seguir no Facebook e Twitter. 🙂

  6. Como obter o valor global de um campo personalizado, já que ele não é disparado na meta descrição pelo Rank Math.

  7. Este artigo me ajudou muito. Muitos agradecimentos do Vietnã.

  8. Obrigado, funcionou como mágica 🙂

  9. muito obrigado. isso funciona perfeitamente

    1. Fico feliz que tenha ajudado, Nail 🙂

  10. Mamma mia – funciona perfeitamente! Muito obrigado! 🙂

  11. Obrigado por este snippet incrível, funciona como mágica ?

    1. Fico feliz que tenha funcionado para você

  12. Olá
    Eu não consigo fazer funcionar. Preciso editar o short code e substituir as palavras: my_key pelo nome do meu campo personalizado?
    E preciso mudar algo no código que você colocou no functions.php ou colar como está? Muito obrigado

  13. Ótimo snippet, obrigado. Funciona muito bem nas minhas páginas de produtos do WooCommerce, mas não no carrinho e checkout. Qualquer conselho sobre como corrigir isso seria muito apreciado!

    1. Nenhuma ideia? 🙁

  14. Andreas Kyriakidis November 1, 2016 at 6:41 am

    Olá! Obrigado pelo código.

    É possível personalizar o snippet para ter também um shortcode [field “my_key” page_id=1]?

  15. Olá Marco, se eu pudesse adivinhar, você está usando o nome de campo personalizado errado. alguns plugins usarão um sublinhado antes do nome do campo personalizado, por exemplo, _description. isso é feito para ocultar os campos no lado do administrador.

    você pode usar este trecho dentro do seu tema para exibir uma lista de todos os campos personalizados. Isso exibirá um aviso de administrador na tela de edição de postagens no painel e listará tudo. Você pode simplesmente remover este trecho quando tiver o nome de campo personalizado correto.

    http://wpsnipp.com/index.php/functions-php/show-absolutely-custom-fields-post/

    1. Não, “description” é o nome do campo, importado pelo plugin “CultureObject”
      Eu insiro um novo “testfield” com o texto “textfield for post” na tela do editor de posts.
      O “description” não aparece, o texto “textfield for post” é visível.
      Eu olhei no banco de dados e ambos os campos aparecem. Exceto pelo texto/conteúdo, eles são idênticos.
      Por que um campo personalizado importado pelo CulturObject se comporta de forma diferente de um campo personalizado criado manualmente.
      A diferença é que os campos que eu preencho manualmente (e que aparecem) estão em posts regulares e os campos personalizados importados pelo CultureObject estão em Posts Personalizados? (que não aparecem)

  16. Jarod Emerson Thornton August 5, 2015 at 11:56 am

    Isso é incrível. Muito obrigado!

  17. Não gera nada dentro de um bloco de texto do Grid Element, em um Post Grid (Visual Composer)

  18. Obrigado! Estava procurando no Google nos últimos 2 dias!!!

  19. Obrigado por esse artigo, me ajudou muito 🙂

  20. Obrigado por esse artigo, me ajudou muito 🙂

  21. 30 Extremely Useful Wordpress Code Snippets & Hacks | Web Design Habits October 14, 2011 at 6:33 am
  22. Cliff Paulick July 21, 2011 at 5:56 pm

    Ao tentar colocar o conteúdo de um campo personalizado dentro de outro shortcode, dependendo de como o outro shortcode está configurado, você poderia dispensar as aspas duplas?
    Por exemplo:
    [my_field_name]
    Em vez de
    [field "my_field_name"]

    Dessa forma, um shortcode como este funcionaria (certo?):
    [contact-form to="[my_field_name]"]
    Porque se um shortcode com aspas estiver dentro de um shortcode com aspas, a confusão de aspas/colchetes no final o confunde (ou seja, não funciona).

    Eu não vejo nenhuma aspa dupla na sua função/snippet, então eu não tinha certeza.

    Muito obrigado!

    1. Cliff Paulick July 21, 2011 at 6:16 pm

      Eu tentei [field]my_field_name[/field] e não funcionou.

      1. Postarei detalhes sobre shortcodes aninhados amanhã, dê uma olhada, isso lhe dará uma ideia melhor de como ele precisa funcionar com shortcodes embutidos.

    2. Não, você não pode fazer isso, não funcionaria mais. O que você está tentando fazer com os shortcodes aninhados? Aninhar shortcodes também não vai funcionar, só vai quebrar.

  23. Cliff Paulick July 19, 2011 at 6:47 pm

    Kevin, acho que isso é EXATAMENTE o que eu esperava encontrar. Obrigado por isso. Quero ter certeza de como usá-lo. Quando você usaria o segundo em vez do primeiro? :
    [field “my_key”][field “my_key” post_id=1]

    Obrigado.

    1. Bem, se você adicionar o shortcode a uma postagem, você pode usar  [field “my_key”] my_key é o nome do campo personalizado. O outro método [field “my_key” post_id=1] permitirá que você defina o ID da postagem para obter o valor do campo personalizado de uma postagem específica.

      1. Cliff Paulick July 19, 2011 at 8:03 pm

        Você poderia ter código HTML em um campo personalizado que “gera”? Por exemplo:

        Hoje é o maior dia do mundo.
        Blah
        [field “list_of_images”]
        As imagens acima são grandiosas, não são?
        Blah
        [field “html_block1”]
        Blah
        [field “html_block2”]
        Obrigado por ler meu blog.

        E, só para esclarecer, se você não adicionar um “post_id=”, ele apenas buscará o campo personalizado do post/página em que você já está – o post atual, certo?

        1. 1. Sem um ID, sim, ele apenas puxará o campo personalizado das postagens atuais.
          2. Não vejo por que não deveria funcionar bem, você deve ser capaz de colocar qualquer coisa no campo e ele será exibido.

        2. Cliff Paulick July 19, 2011 at 9:21 pm

          Acho que o que estou perguntando é se ele renderiza o conteúdo do campo personalizado como se tivesse sido inserido no Editor Visual ou como se tivesse sido inserido no Editor HTML.

        3. Não, ele renderizará HTML perfeitamente.

  24. Adicionar este código em function.php desabilitou meu site. O que eu estava fazendo de errado?

    Shovan Sargunam
    da equipe http://tamilbabyname.org

    1. Você está recebendo algum erro?

      1. Falta um A ) na linha 6, antes de return;

        Funciona bem, tirando isso 🙂

        1. Legal, obrigado, atualizei o snippet,

  25. Tweets that mention Wordpress Get custom field value with shortcode – wpsnipp.com Wordpress code snippets for your blog -- Topsy.com January 20, 2011 at 6:14 pm

    […] Esta postagem foi mencionada no Twitter por wp_freak, WPSNIPP. WPSNIPP disse: #wordpress Obtenha o valor do campo personalizado com shortcode http://bit.ly/fWRRa3 #blog por favor RT 🙂 […]

Adicionar um comentário

Ficamos felizes que você tenha escolhido deixar um comentário. Por favor, tenha em mente que todos os comentários são moderados de acordo com nossa política de privacidade, e todos os links são nofollow. NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.

Checklist de Lançamento WordPress

O Checklist Definitivo para Lançamento de WordPress

Compilamos todos os itens essenciais da lista de verificação para o lançamento do seu próximo site WordPress em um e-book prático.
Sim, envie-me o eBook Gratuito!