Ya hemos visto como almacenar información en WordPress usando add_option ,… podríamos decir que son datos que vamos a tener en todo nuestro WordPress pero y si quisiéramos ampliar información del perfil de los usuarios por ejemplo queremos añadir redes sociales que no existan, poner campos en nuestras categorías, comentarios, … para eso esta la metadata API de WordPress
Como dice la documentación una simple y estándar forma de manipular la información de los objetos de WordPress.
La forma que tiene trabajar WordPress con esta información es muy sencilla, para cada uno de estos elementos básicos tiene una tabla en la base de datos para guardar los meta.
Como guarda los metadatos WordPress en la base de datos
- users (usuarios) – wp_user y para guardar los metadatos wp_usermeta
- comments (comentarios) – wp_comments y para guardar los metadatos wp_commentmeta
- terms (categorías y etiquetas) – wp_terms y para guardar los metadatos wp_termmeta
- posts (entradas y paginas) – wp_posts y para guardar los metadatos wp_postmeta
Ya sabemos donde los guarda y vamos a ver como los guarda.
Pues simplemente con unas tablas donde guarda clave / valor.
¿Porque usar este método?
Es muy flexible y puedes guardar cualquier campo. De esta forma evitas tener que cambiar el modelo para añadir nuevos campos.
Vamos a ver unos ejemplos con las tablas de meta de WordPress
Todas las tablas estan estructuradas de la misma manera.
Tabla de wp_usermeta
En este caso la tabla se compone de 4 campos:
- umeta_id // identificador de la tabla wp_usermeta
- user_id // identificador del usuario
- meta_key // clave en nickname, firstname,
- meta_value // valor o resultado
Tabla de wp_postmeta
- meta_id —-> identificador de la tabla
- post_id —-> identificador del post( este viene de la tabla wp_posts)
- meta_key —-> la clave
- meta_value –> el valor
Tabla de wp_commentmeta
- meta_id —-> identificador de la tabla
- comment_id —-> identificador del comentario ( este viene de la tabla wp_comments)
- meta_key —-> la clave
- meta_value –> el valor
Quien usa esto , aquello relacionado con comentarios por ejemplo el plugin askimet entre otros
Tabla de wp_termmeta
- meta_id —-> identificador de la tabla
- term_id —-> identificador del term ( este viene de la tabla wp_terms)
- meta_key —-> la clave
- meta_value –> el valor
¿Como se accede a esta información ?
Comentábamos al principio que WordPress tenia una api para trabajar con estos meta.
Funciones para trabajar con los metas de usuarios
- get_user_meta()
- add_user_meta()
- update_user_meta()
- delete_user_meta()
Funciones para trabajar con los meta de los posts
- get_post_meta()
- add_post_meta()
- update_post_meta()
- delete_post_meta()
Funciones para trabajar con los meta de los terms ( categorias y etiquetas)
- get_term_meta()
- add_term_meta()
- update_term_meta()
- delete_term_meta()
Esto no quiere decir que los campos se pongan y ya te van a aparecer los campos en el formulario pero un ejemplo practico seria que si os vais a una entrada y añadis un campo personalizado, dentro de un post, vereis el resultado en la base de datos.
Asi que para ese post en concreto existe un metadato “camponuevo” con valor “veamos como se ve en la bd”
Este sera el resultado en el mysql
Como veis el ultimo campo es el que tenemos en la base de datos en la tabla wp_postmeta.
Espero que este articulo sirva para que entendáis un poco para que sirven los metadatos y como se almacenan.