X

Obtener valor de campo personalizado con shortcode

Snippets de IsItWP

¿Quieres obtener valores de campos personalizados usando un shortcode? Si bien probablemente exista un plugin para esto, hemos creado un fragmento de código rápido que puedes usar para obtener el valor de un campo personalizado con un shortcode en WordPress.

Instrucciones:

Todo lo que tienes que hacer es agregar este código al archivo functions.php de tu tema o a un plugin específico del sitio:

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]

Nota: Si es la primera vez que agregas fragmentos de código en WordPress, consulta nuestra guía sobre cómo agregar fragmentos de código correctamente en WordPress, para que no rompas accidentalmente tu sitio.

Si te gustó este fragmento de código, considera echar un vistazo a nuestros otros artículos en el sitio como: Los 10 mejores plugins de testimonios de WordPress para agregar prueba social y Cómo crear un formulario de contacto en WordPress.

Comentarios   Deja una respuesta

  1. ¿El mío solo muestra la palabra Array?

  2. Hola, excelente fragmento 🙂

    ¿Es posible mostrar un mensaje de error cuando el archivo personalizado no existe?

    Es difícil detectar errores cuando no hay ninguna salida.

    Saludos cordiales
    Rudi

  3. ¿Alguna idea de cómo mostrar un campo personalizado como enlace?
    Intenté esto: prueba pero no funciona. Gracias.

  4. Hola,

    ¡Está funcionando bien para los campos personalizados de los plugins, gracias! Pero, ¿cómo mostrar campos estándar como "Título" o "Extracto"?

  5. muchas gracias. buen trabajo

    1. Hola Kasra, de nada. No olvides seguirnos en Facebook y Twitter. 🙂

  6. ¿Cómo globalizar el valor de un campo personalizado ya que Rank Math no lo activa en la meta descripción?

  7. Este artículo me ayudó mucho. Muchas gracias desde Vietnam.

  8. Gracias, funcionó a la perfección 🙂

  9. muchas gracias. esto funciona perfectamente

    1. Me alegra que haya ayudado, Nail 🙂

  10. ¡Mamma mia, funciona perfectamente! ¡Muchas gracias! 🙂

  11. Gracias por este increíble fragmento, funciona a la perfección ?

    1. Me alegra que te haya funcionado

  12. Hola
    No puedo hacerlo funcionar. ¿Necesito editar el código abreviado y reemplazar las palabras: my_key con el nombre de mi campo personalizado?
    ¿Y tengo que cambiar algo en el código que pusiste en functions.php o pegarlo tal cual? Muchas gracias

  13. Gran fragmento, gracias. Funciona muy bien en mis páginas de productos de WooCommerce, pero no en el carrito y la página de pago. Cualquier consejo para solucionar esto sería muy apreciado.

    1. ¿Ni idea? 🙁

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

    ¡Hola! Gracias por el código.

    ¿Es posible personalizar el fragmento para tener también un shortcode [field “my_key” page_id=1]?

  15. Hola Marco, si tuviera que adivinar, estás usando el nombre de campo personalizado incorrecto. algunos plugins usarán un guion bajo antes del nombre del campo personalizado, por ejemplo, _description. esto se hace para ocultar los campos en el lado de administración.

    puedes usar este fragmento dentro de tu tema para mostrar una lista de todos los campos personalizados. Esto mostrará un aviso de administrador dentro de la pantalla de edición de publicaciones en el administrador y listará todo. Simplemente puedes eliminar este fragmento cuando tengas el nombre de campo personalizado correcto.

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

    1. No, “description” es el nombre del campo, importado por el plugin “CultureObject”
      ingreso un nuevo “testfield” con el texto “textfield for post” en la pantalla del editor de posts.
      El “description” no aparece, el texto “textfield for post” es visible.
      Busqué en la base de datos y ambos campos aparecen. Excepto por el texto/contenido, son idénticos.
      ¿Por qué un campo personalizado importado por CulturObject se comporta de manera diferente a un campo personalizado creado manualmente.
      ¿Es la diferencia que los campos que lleno manualmente (y que sí aparecen) están en posts regulares y los campos personalizados importados por CultureObject están en Posts Personalizados? (que no aparecen)

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

    ¡Esto es genial. ¡Muchas gracias!

  17. No genera nada dentro de un bloque de texto de Elemento de Cuadrícula, en una Cuadrícula de Publicaciones (Visual Composer)

  18. ¡Gracias! ¡Estuve buscando en Google los últimos 2 días!!!

  19. Gracias por ese artículo, realmente me ayudó mucho 🙂

  20. Gracias por ese artículo, realmente me ayudó mucho 🙂

  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

    Al intentar colocar el contenido de un campo personalizado dentro de otro shortcode, dependiendo de cómo esté configurado el otro shortcode, ¿podrías eliminar las comillas dobles?
    Por ejemplo:
    [my_field_name]
    en lugar de
    [field "my_field_name"]

    De esa manera, un shortcode como este podría funcionar (¿verdad?) :
    [contact-form to="[my_field_name]"]
    Porque si un shortcode con comillas está dentro de un shortcode con comillas, la cosa de las comillas/corchetes al final lo confunde (es decir, no funciona).

    No veo comillas dobles en tu función/fragmento, así que no estaba seguro.

    ¡Muchas gracias!

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

      Intenté [field]my_field_name[/field] y no funcionó.

      1. Publicaré detalles sobre shortcodes anidados mañana, échale un vistazo, te dará una mejor idea de cómo necesita funcionar con shortcodes incrustados.

    2. No, no puedes hacer eso, ya no funcionaría. ¿Qué intentas hacer con los shortcodes anidados? Anidar shortcodes tampoco funcionará, simplemente se romperá.

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

    Kevin, creo que esto es EXACTAMENTE lo que esperaba encontrar. Gracias por ello. Quiero estar seguro de cómo usarlo. ¿Cuándo usarías el segundo en lugar del primero? :
    [field “my_key”][field “my_key” post_id=1]

    Gracias.

    1. Bueno, si agregas el shortcode a una publicación, puedes usar  [field “my_key”] my_key es el nombre del campo personalizado. El otro método [field “my_key” post_id=1] te permitirá definir el ID de la publicación para obtener el valor del campo personalizado de una publicación específica.

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

        ¿Podría haber código HTML en un campo personalizado que "salga"? Por ejemplo:

        Hoy es el mejor día del mundo.
        Blah
        [field “list_of_images”]
        Las imágenes de arriba son geniales, ¿verdad?
        Blah
        [field “html_block1”]
        Blah
        [field “html_block2”]
        Gracias por leer mi blog.

        Y, para que quede claro, si no agregas un "post_id=", simplemente obtendrá el campo personalizado de la publicación/página en la que ya te encuentras, ¿la publicación actual, correcto?

        1. 1. Sin un ID, sí, simplemente extraerá el campo personalizado de las publicaciones actuales.
          2. No veo por qué no debería funcionar bien, deberías poder poner cualquier cosa en el campo y se mostrará.

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

          Supongo que lo que pregunto es si renderiza el contenido del campo personalizado como si se hubiera ingresado en el Editor Visual o como si se hubiera ingresado en el Editor HTML.

        3. No, renderizará HTML sin problemas.

  24. Agregar este código en function.php deshabilitó mi sitio web. ¿Qué hice mal?

    Shovan Sargunam
    del equipo de http://tamilbabyname.org

    1. ¿Estás recibiendo algún error?

      1. Falta una A) en la línea 6, antes de return;

        Funciona bien aparte de eso 🙂

        1. Genial, gracias, actualicé el fragmento,

  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 publicación fue mencionada en Twitter por wp_freak, WPSNIPP. WPSNIPP dijo: #wordpress Obtén el valor de un campo personalizado con un shortcode http://bit.ly/fWRRa3 #blog por favor RT 🙂 […]

Agrega un comentario

Nos complace que hayas elegido dejar un comentario. Ten en cuenta que todos los comentarios se moderan de acuerdo con nuestra política de privacidad, y todos los enlaces son nofollow. NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.

Lista de verificación para lanzar WordPress

La lista de verificación definitiva para lanzar WordPress

Hemos recopilado todos los elementos esenciales de la lista de verificación para el lanzamiento de tu próximo sitio web de WordPress en un práctico ebook.
¡Sí, envíame el eBook gratis!