Crear campos personalizados automáticamente al publicar entradas de WordPress es una forma poderosa de ahorrar tiempo y reducir tareas repetitivas, especialmente si administras un sitio grande o trabajas en funcionalidades personalizadas.
En lugar de agregar manualmente los mismos campos personalizados cada vez que publicas un cierto tipo de contenido, puedes automatizar el proceso y mantener la consistencia.
Hemos trabajado en muchos proyectos de WordPress a lo largo de los años, construyendo desde blogs sencillos hasta sitios complejos con funciones avanzadas. En el camino, hemos recopilado muchos consejos prácticos como este que pueden hacer que tu flujo de trabajo sea más rápido y eficiente.
En este tutorial, te mostraremos cómo agregar campos personalizados automáticamente al publicar entradas en WordPress, paso a paso.

¿Por qué agregar campos personalizados automáticamente?
Los campos personalizados te permiten agregar información adicional a tus entradas. Esta información se puede mostrar en tu sitio web, mantenerse privada o ser utilizada por temas y plugins para extender la funcionalidad de tu sitio web de WordPress.
Hay muchas formas creativas de usar campos personalizados. Encontrarás una lista de ideas útiles en nuestra guía de consejos, trucos y hacks para campos personalizados.
En algunos casos, querrás que un campo personalizado se cree automáticamente cada vez que publiques una entrada. Esto es especialmente útil cuando estás agregando funcionalidad a WordPress para que puedas usarlo como algo más que un simple blog.
Por ejemplo, en WPBeginner, usamos este método al crear un sitio web de galerías. Queríamos almacenar URLs cortas para cada elemento enviado a la galería. Por lo tanto, creamos automáticamente un campo personalizado para almacenar la URL corta cuando se publicaba cada entrada.
Este tipo de automatización ayuda a los desarrolladores a ahorrar tiempo, reducir errores y crear sitios de WordPress más potentes con menos esfuerzo manual.
Ahora, veamos cómo configurarlo.
Agregar campos personalizados automáticamente al publicar una entrada
Este método implica agregar un fragmento de código personalizado al archivo functions.php de tu tema. No recomendamos editar los archivos de tu tema a usuarios inexpertos, ya que incluso un pequeño error podría dañar tu sitio web.
En su lugar, te mostraremos cómo usar el plugin WPCode en este tutorial.

WPCode facilita la adición de fragmentos de código en WordPress sin tener que editar el archivo functions.php de tu tema. También puedes administrar todos tus fragmentos de código desde una pantalla central.
Si esta es la primera vez que agregas código a WordPress, deberías consultar nuestra guía sobre cómo copiar y pegar fragmentos de código en WordPress para obtener más detalles.
Para empezar, necesitas instalar y activar el plugin gratuito WPCode. Si necesitas ayuda, consulta nuestro tutorial sobre cómo instalar un plugin de WordPress.
Nota: La versión gratuita de WPCode tiene todo lo que necesitas para agregar código personalizado en WordPress. Para funciones más avanzadas como fragmentos programados, píxeles de conversión y más, puedes actualizar a WPCode Pro.
Una vez que el plugin esté activado, se agregará un nuevo elemento de menú llamado ‘Fragmentos de código’ a tu barra de administración de WordPress. Haz clic en él y luego presiona el botón ‘Agregar nuevo’ en la siguiente pantalla.

Esto te llevará a la Biblioteca de fragmentos de WPCode.
Desde aquí, navega a la opción ‘Agregar tu código personalizado (Nuevo fragmento)’ y haz clic en el botón ‘+ Agregar fragmento personalizado’ debajo de ella.

A continuación, selecciona 'Fragmento de PHP' como el tipo de código de la lista de opciones que aparecen en la pantalla.

Después de eso, deberás darle un título al fragmento, luego copiar el siguiente código y pegarlo en el cuadro 'Vista previa del código'.
add_action('publish_page', 'add_custom_field_automatically');
add_action('publish_post', 'add_custom_field_automatically');
function add_custom_field_automatically($post_ID) {
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
add_post_meta($post_ID, 'field-name', 'custom value', true);
}
}
Tendrás que reemplazar 'nombre-del-campo' y 'valor-personalizado' con el nombre y valor reales que deseas usar para el campo personalizado.

A continuación, desplázate hacia abajo hasta la sección 'Inserción'. Aquí, deberás dejar seleccionado el método 'Inserción automática'.

Con el método de inserción automática, el fragmento se insertará y ejecutará automáticamente en la ubicación correcta.
Una vez que hayas terminado, deberás cambiar el interruptor de 'Inactivo' a 'Activo' y luego hacer clic en el botón 'Guardar fragmento'.

Una vez que el fragmento esté activado, el campo personalizado se creará cada vez que publiques una entrada.
Esperamos que este tutorial te haya ayudado a aprender cómo agregar campos personalizados automáticamente al publicar una entrada en WordPress. También podrías querer aprender cómo mostrar campos personalizados fuera del bucle en WordPress o consultar nuestra lista de plugins esenciales de WordPress para hacer crecer tu sitio web.
Si te gustó este artículo, suscríbete a nuestro canal de YouTube para obtener tutoriales en video de WordPress. También puedes encontrarnos en Twitter y Facebook.

Jiří Vaněk
Si tengo un sitio web con varios usuarios y quiero que la biografía de un autor se inserte automáticamente cuando se publica un artículo, ¿se puede usar esta guía? Es decir, ¿se pueden usar campos personalizados para asegurar que se inserte una breve biografía del autor al principio dependiendo de quién escribe el artículo? Me gustaría que fuera así de automatizado. Actualmente, hacemos esto usando Elementor, donde cada autor tiene su plantilla guardada y debe insertarla manualmente al principio.
Soporte de WPBeginner
Lo que buscas es un cuadro de biografía del autor, que cubrimos en nuestra guía a continuación:
https://www.wpbeginner.com/wp-tutorials/how-to-add-an-author-info-box-in-wordpress-posts/
Administrador
Sateesh Raghuwanshi
Necesito agregar esta acción para un tipo de publicación personalizado llamado ‘ad_system’
nayan
Quiero agregar el ID de categoría para la publicación en la tabla post_meta. ¿Cómo se puede modificar la función function add_custom_field_automatically($post_ID) para acomodar eso?
Gracias
chris
En lugar de agregar el campo personalizado en el momento de crear la publicación, ¿cómo muestro un campo personalizado por defecto en la página de administración?
puanthanh
no se está agregando al tipo de publicación personalizado
Personal editorial
Si te fijas, el código anterior no tiene nada relacionado con los tipos de publicación personalizados. Solo se agrega al contenido de tipo ‘Post’ y ‘Page’. Por lo tanto, tendrías que especificar el hook para tu tipo de publicación personalizado.
Administrador
puanthanh
Gracias por la respuesta. ¿Me puedes ayudar con este código.
add_action(‘publish_page’, ‘add_custom_field_automatically’);
add_action(‘publish_post’, ‘add_custom_field_automatically’);
add_action( ‘save_post’, ‘add_custom_field_automatically’ );
function add_custom_field_automatically($post_ID) {
global $post;
if(!wp_is_post_revision($post_ID)) {
global $wpdb;
$user_id = $wpdb->get_var("SELECT post_author FROM $wpdb->posts WHERE ID = $post_ID");
$themename = $wpdb->get_var("SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = ‘themeperauthor’ AND user_id = $user_id");
add_post_meta($post_ID, ‘themeperauthor’, $themename, true);
}
}
Cuando se cambia el campo meta del usuario, quiero eliminar automáticamente el valor del campo personalizado y actualizarlo con el nuevo.
brian
He estado trabajando en agregar algunos campos personalizados ocultos al publicar/actualizar una entrada (precediendo el nombre del campo con “_”), pero por alguna razón tengo que actualizar la entrada dos veces antes de que las entradas de wp_postmeta se escriban en la base de datos.
He intentado modificar la prioridad y experimentar con otros action hooks (draft_to_publish, edit_post, etc.) pero no parece hacer ninguna diferencia.
¿Alguna idea?
Personal editorial
¿estás usando el truco de Otto con la API de transient?
Administrador
Boba
Thanks for including the source link
Personal editorial
Thanks for providing an amazing tip
Administrador
Daniel Suarez
¡Gracias Otto, otro gran consejo!
Piet
¿funcionará esto también para tipos de publicación personalizados?
algo como add_action(‘publish_custom-post-typ-name’, ‘add_custom_field_automatically’);
Otto
Sí, lo hará.
Una desventaja de esta técnica de la que la gente debería ser consciente es que si alguien edita una publicación publicada, este hook SE DISPARARÁ de nuevo en la edición. Por lo tanto, necesitas verificar los metadatos antes de agregarlos, o actualizarlos, o hacer lo que tenga más sentido para tu caso de uso.
Si solo quieres que tu código se active solo en la publicación inicial, entonces puedes usar el hook transition_post_status. Este hook funciona así:
add_action('transition_post_status','example',10,3);
function example($new, $old, $post) {
// $new es el nuevo estado de la publicación ('publish')
// $old es el estado anterior de la publicación ('draft')
// $post es el objeto de publicación completo (así que usa $post->ID para el ID, etc.)
}
Luego, aquí puedes hacer una verificación para algo como esto:
if ($new == 'publish' && $old != 'publish')
Para que tu código solo se use cuando el estado de la publicación realmente transiciona a publicado desde lo que era antes. Este hook se dispara al mismo tiempo que los hooks {$status}_{$post-type}, por lo que su operación es básicamente la misma.
Piet
¡Gracias Otto, jugaré un poco con eso!
Personal editorial
Gracias Otto por la aclaración.
Administrador
Vivek Parmar
gracias por este útil consejo. anteriormente, al usar campos personalizados, tenía que trabajar manualmente. ahora esto lo hará automáticamente. gracias por ahorrarme tiempo valioso