¿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.
¿El mío solo muestra la palabra Array?
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
¿Alguna idea de cómo mostrar un campo personalizado como enlace?
Intenté esto: prueba pero no funciona. Gracias.
Hola,
¡Está funcionando bien para los campos personalizados de los plugins, gracias! Pero, ¿cómo mostrar campos estándar como "Título" o "Extracto"?
muchas gracias. buen trabajo
Hola Kasra, de nada. No olvides seguirnos en Facebook y Twitter. 🙂
¿Cómo globalizar el valor de un campo personalizado ya que Rank Math no lo activa en la meta descripción?
Este artículo me ayudó mucho. Muchas gracias desde Vietnam.
Gracias, funcionó a la perfección 🙂
muchas gracias. esto funciona perfectamente
Me alegra que haya ayudado, Nail 🙂
¡Mamma mia, funciona perfectamente! ¡Muchas gracias! 🙂
Gracias por este increíble fragmento, funciona a la perfección ?
Me alegra que te haya funcionado
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
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.
¿Ni idea? 🙁
¡Hola! Gracias por el código.
¿Es posible personalizar el fragmento para tener también un shortcode [field “my_key” page_id=1]?
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/
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)
¡Esto es genial. ¡Muchas gracias!
No genera nada dentro de un bloque de texto de Elemento de Cuadrícula, en una Cuadrícula de Publicaciones (Visual Composer)
¡Gracias! ¡Estuve buscando en Google los últimos 2 días!!!
Gracias por ese artículo, realmente me ayudó mucho 🙂
Gracias por ese artículo, realmente me ayudó mucho 🙂
[…] Fuente: http://wpsnipp.com/index.php/functions-php/get-custom-field-value-with-shortcode/ […]
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!
Intenté
[field]my_field_name[/field]y no funcionó.Publicaré detalles sobre shortcodes anidados mañana, échale un vistazo, te dará una mejor idea de cómo necesita funcionar con shortcodes incrustados.
No, no puedes hacer eso, ya no funcionaría. ¿Qué intentas hacer con los shortcodes anidados? Anidar shortcodes tampoco funcionará, simplemente se romperá.
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.
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.
¿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. 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á.
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.
No, renderizará HTML sin problemas.
Agregar este código en function.php deshabilitó mi sitio web. ¿Qué hice mal?
Shovan Sargunam
del equipo de http://tamilbabyname.org
¿Estás recibiendo algún error?
Falta una A) en la línea 6, antes de return;
Funciona bien aparte de eso 🙂
Genial, gracias, actualicé el fragmento,
[…] 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 🙂 […]