Asociación de Metadatos de WordPress: Entidades Relacionadas
En este punto, hemos cubierto cómo crear las entidades dentro del complemento (que, como dijimos, es solo una palabra elegante para otra idea concreta). Es decir, tenemos un usuario y un tipo de publicación personalizada, o un libro. Y aquí es donde comenzamos a tomar las dos entidades separadas y las combinamos y trabajamos con lo que llamaremos asociación de metadatos de WordPress.
Pero antes de hacerlo, es importante comprender los dos tipos de metadatos con los que trabajaremos y las dos formas (o tres formas, según se mire) de cómo podemos asociar los metadatos.
Al igual que con el resto de las publicaciones de la serie, esto no pretende ser una inmersión profunda en la comprensión de cada una de las tablas o una inmersión profunda en cada una de las funciones de la API. En su lugar, vamos a examinar lo que está disponible, ponerlo en uso y dejar detalles más finos para publicaciones futuras (o quizás discusiones en los comentarios).
Asociación de metadatos de WordPress
Los metadatos no son exclusivos de WordPress. Probablemente sepas esto. Y a menudo se define como :
Información sobre información o datos sobre datos.
Y esa es una buena manera de decirlo. WordPress ofrece algunas tablas de base de datos diferentes que podemos usar para proporcionar información sobre otros tipos de entidades dentro de WordPress. Vamos a usar un par de estos más adelante en esta publicación, pero basta con decir que WordPress ofrece :
- comentar metadatos,
- publicar metadatos,
- término metadatos,
- y metadatos de usuario
Y todo esto está disponible listo para usar.
Una de las tablas de metadatos de WordPress.
Las API para cada uno de estos son consistentes, lo que también es bueno. Pero, nuevamente, solo nos ocuparemos de un par de estos en el resto de esta publicación.
1 Las tablas de metadatos
Para nuestro ejemplo, vamos a usar una o ambas de las siguientes dos tablas:
De acuerdo, en su instalación, pueden tener un prefijo diferente, pero el sufijo es el mismo, y entiende la idea.
En segundo lugar, usaremos las funciones API relacionadas para asociar nuestros metadatos. Los veremos en el código cuando asociemos los datos entre nuestro usuario y el tipo de publicación personalizada (o nuestro autor y nuestros libros si desea utilizar una terminología más precisa).
Bien entonces. Toda esta primera parte de la publicación solo está sentando las bases para las partes de la infraestructura subyacente de WordPress que vamos a utilizar. Habiendo dicho todo eso, veamos cómo podemos convertir esto programáticamente en algo un poco más útil.
2 Asociación de metadatos
La idea detrás de la asociación de metadatos de WordPress suena más complicada de lo que es. Piénsalo de esta manera:
- Dadas dos tablas, ¿cómo podemos compartir información entre dos entidades que permiten que una sepa sobre la otra?
Por ejemplo, dado un usuario, ¿cómo podemos informar a los metadatos del usuario sobre los metadatos de la publicación? O, dándole la vuelta, ¿cómo podemos permitir que los metadatos de las publicaciones sepan algo sobre los metadatos de los usuarios relacionados?
En un alto nivel, esto es realmente lo que estamos haciendo: estamos dejando que una entidad sepa que la otra existe y la estamos relacionando con la otra. O podría ser al revés. Dependiendo de su implementación, uno puede ser más beneficioso que el otro.
1 de ida
Cuando hablamos de crear asociaciones de WordPress unidireccionales, generalmente nos referimos a la idea de que solo una entidad es consciente de la otra. Esto significa que el usuario solo puede estar al tanto de la publicación.
Entonces, podríamos configurar después de que se crea una publicación, como que el usuario en cuestión conoce la publicación que se acaba de crear :
<?php
// Using post title as the value, but it's just an example.
add_user_meta( $user_id, $post_id, $post_title );
O tal vez significa que la publicación es consciente del usuario:
<?php
// User user email address a value but just an example.
add_post_meta( $post_id, $user_id, $email_address );
Pero no importa cómo lo mires, la asociación solo va en una dirección.
Y aunque la relación va en una dirección, no tiene por qué ser así. Es decir, ambas entidades pueden ser conscientes una de la otra.
2 de dos vías
Dado que las API de metadatos son tan fáciles y consistentes para trabajar con ellas, no es difícil trabajar con ellas. Cada uno de los generalmente requiere al menos dos de los siguientes:
- una especie de ID con la que se relacionan los metadatos,
- una clave meta que se puede utilizar para buscar la información,
- un valor que almacena información asociada con el ID y la publicación.
Con respecto a qué ID y qué clave elige, a menudo depende de su implementación, como hemos visto.
Hasta este punto, hemos visto cómo crear una asociación unidireccional. Una asociación bidireccional no es nada diferente. Es solo que en lugar de hacer que una entidad sea consciente de la otra, hacemos que ambas entidades sean conscientes de la otra:
<?php
/**
* Using this association will give you the ability to query for information
* both on posts and users and then work with the data accordingly.
*/
add_user_meta( $user_id, $post_id, $post_title );
add_post_meta( $post_id, $user_id, $email_address );
Pero esta no es una decisión que deba tomarse simplemente porque sí. En su lugar, vale la pena pensar en algunas de las razones por las que puede querer elegir uno u otro.
Pensando en el problema
Cuando se trata de resolver problemas como este, no existe una solución definitiva en términos de "deberías resolverlo [de esta manera]" de cualquier manera que sea. En cambio, debes hacerte preguntas como "¿qué hace que el forma más fácil de administrar estos datos?"
Por ejemplo, si está interesado principalmente en la administración de usuarios, quizás todo lo que necesite sea tener metadatos de usuario conscientes de cualquier entidad con la que estén relacionados. De esta manera, cuando se elimine el usuario, también se asegurará de buscar las entidades relacionadas con él a través de la tabla de metadatos del usuario y eliminarlas también.
Del mismo modo, quizás la misma funcionalidad iría en ambos sentidos. Es decir, así como desea asegurarse de que cuando se elimine un usuario, sus publicaciones también se eliminen, también puede desear que el usuario sea eliminado (o modificado) cada vez que se elimine una de sus publicaciones. Y si ese es el caso, entonces la asociación bidireccional lo permite.
Dado que tiene la ID de una publicación determinada y la ID de un usuario determinado, así como las claves de metadatos que ha especificado, es posible casi cualquier tipo de consulta que pueda visualizar a través de la API de metadatos de WordPress o WP_Query o incluso a través de WP_User_Query..
El fin
En última instancia, espero que esta serie haya brindado una idea de cómo no solo crear asociaciones de metadatos de WordPress, sino también cómo pensar de manera abstracta sobre los conceptos dentro de WordPress en relación con la creación de implementaciones de nivel superior en sus complementos y aplicaciones web.
Para aquellos que estén interesados, estoy considerando lanzar esta serie como un pequeño recurso en formato PDF junto con un complemento funcional para estudiar. Si esto es algo que le interesa hacer, regístrese en la lista de correo aquí y me aseguraré de informarle cuando esté listo; de lo contrario, use la información de la serie para avanzar y crear algo que valga la pena
¿Quieren más?
Publicaciones de la serie
- Asociación de metadatos de WordPress: cómo hacerlo
- Creación programática de usuarios de WordPress
- Tipos de publicaciones de WordPress: una abstracción para las entidades
- Asociación de Metadatos de WordPress: Entidades Relacionadas
