Descubre en este tutorial cómo cambiar varias metakeys de un campo personalizado de WordPress en lote mediante código.
Si has utilizado Advanced Custom Fields u otro método para añadir campos personalizados a un tipo de entrada (post o cualquier Custom Post Type) es posible que hayas querido cambiar el nombre de una metakey después de haberla creado e introducido varios valores.
El problema es que si cambias el nombre directamente, lo que estás haciendo es crear una nueva metakey y no tendrá asociados los valores que hayas introducido anteriormente (que seguirán asociados a la antigua).
Por lo tanto, lo que tienes que hacer es sustituir la antigua metakey por la nueva. Podrías ir a la base de datos y cambiar manualmente el nombre (manteniendo el valor) pero esto puede ser muy tedioso dependiendo del volumen.
Por eso en este tutorial vamos a ver cómo hacerlo en lote de forma programática.
Código para modificar varias metakeys de un campo personalizado de un tipo de entrada en bloque
Añade el siguiente snippet al fichero functions.php o a tu plugin de funcionalidad:
Para ver este código y los otros 1921 snippets de esta web,
identifícate o suscríbete aquí.
Con este código usas las funciones de WordPress para modificar la metainformación de una entrada (get_post_meta
, update_post_meta
y delete_post_meta
) en un loop para sustituir la antigua metakey por la nueva.
La idea es crear un array con los dos valores con esta estructura:array( 'old_metakey_1','new_metakey_1' )
En el caso de arriba estas cambiando las siguientes metakeys:
- ‘duration’ por ‘course_duration’
- ‘difficulty’ por ‘course_dificulty’
- ‘requirements’ por ‘course_requirements’
Pero puedes personalizarlo a tu gusto.
También puedes modificar en los argumentos ($args) 'course'
por el tipo de entrada que te interese.
Como la función está «enganchada» en el hook init
, solo tienes que cargar o refrescar una vez la web para que se ejecute. Cuando lo hayas hecho ya se habrán modificado las metakeys, así que puedes y debes eliminar este snippet.
Para comprobar que los cambios se han producido correctamente puedes revisar la tabla postmeta en la base de datos.
Conclusiones
Ahora ya sabes cómo sustituir en bloque varias metakeys de un campo personalizado asociado a un tipo de entrada, tanto si está creado con Advanced Custom Fields u otro método.
Si tienes alguna duda te leo en los comentarios. Y si quieres dejarme una sugerencia para futuros tutoriales, envíamela a través del formulario de contacto.
Todo ventajas de ser suscriptor. 😉