Dominar los metadatos de WordPress comprender y utilizar matrices

En la primera parte de esta serie, cubrimos qué son los metadatos de WordPress, cómo se pueden recuperar y los distintos tipos de datos (como objetos o matrices) en los que se pueden devolver. Ahora es el momento de aprender sobre los diferentes tipos de arreglos.

Cuando escribe una matriz manualmente, sabe cuál es su estructura y cuál es el nombre de cada índice. Pero cuando está creando matrices consultando una base de datos, tendrá que hacer un trabajo de detective para determinar la estructura de los datos devueltos y los nombres de los índices..

Tipos de matrices

Antes de saltar a los diversos tipos de arreglos disponibles, es importante entender que un arreglo de PHP es cualquier variable que contiene más de una pieza de datos..

Matrices indexadas y asociativas

El ejemplo más simple de una matriz es una lista de valores separados por comas, dentro de la función formación(), Me gusta esto:

 $ heros = array ('Luke', 'Leia', 'Han');

PHP indexa automáticamente las matrices creadas en listas separadas por comas, asignando a cada elemento un índice numérico, comenzando desde cero. Esto significa que podríamos recuperar el valor del segundo elemento 'Leia' de la $ heroes matriz especificando el índice 1.

Aquí es cómo se vería eso:

 $ heroes = array ('Luke', 'Leia', 'Han'); echo $ heroes [1];

Para un ejemplo práctico de WordPress, eche un vistazo a la función wp_get_attachment_image_src () que devuelve una matriz indexada de información sobre una imagen.

Podemos obtener la URL, el ancho y el alto de una imagen usando los índices numéricos de la matriz que devuelve esta función (tenga en cuenta que el '7' que se pasa a la función se refiere al ID del archivo adjunto, y en este caso es arbitrario para los fines de nuestro ejemplo):

 $ img = wp_get_attachment_image_src (7); eco ' ';

Por supuesto, mantener un registro de los números de índice en matrices puede resultar confuso, por lo que PHP nos permite crear matrices asociativas. Volviendo a nuestro $ heroes Por ejemplo, podríamos darle un nombre a cada elemento de nuestra matriz:

 $ heroes = array ('unlikely_hero' => 'Luke', 'badass_princess' => 'Leia', 'lovable_rouge' => 'Han',);

Llamamos a estos nombres llaves. En esta matriz, diríamos que la clave 'unlikely_hero' tiene el valor 'Luke'. Podemos obtener el valor de esta clave colocándola entre corchetes junto a la variable. Por ejemplo:

 echo $ hereos ['unlikely_hero'];

Arreglos multidimensionales

Hasta ahora, hemos visto matrices que son esencialmente una lista de elementos, pero las matrices también pueden estar compuestas por otras matrices. Llamamos a estos arrays multidimensionales. Al crear una matriz multidimensional, esencialmente tenemos una lista de listas, donde cada índice o clave de nuestra matriz está definido por otra matriz..

Por ejemplo:

 $ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'Unlikely Hero',), 'Leia' => array ('full_name' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Princess',), 'Han' => array ('full_name' => 'Han Solo', ' home_planet '=>' Corell ',' trope '=>' Lovable Rouge ',),);

Este tipo de matriz es muy útil ya que nos permite recorrerlo, escribir nuestro marcado una vez y dejar que PHP se repita tantas veces como sea posible..

Herramientas para el trabajo de detective

Como dije al principio de este artículo, trabajar con metadatos a menudo puede implicar algún trabajo de detección para descubrir la estructura de la matriz. Como cualquier detective, debe asegurarse de tener las herramientas adecuadas para el trabajo.

Los desarrolladores aficionados modifican sus archivos de temas para generar valores de arrays temporalmente. Pero si desea trabajar de manera rápida y eficiente, lo hará de manera profesional, con la consola de depuración..

Los desarrolladores aficionados modifican sus archivos de temas para generar valores de arrays temporalmente. Pero si desea trabajar de manera rápida y eficiente, lo hará de manera profesional, con la consola de depuración..

¿Qué es la consola de depuración??

Debug Console es uno de los varios complementos para el complemento Barra de depuración que ningún desarrollador de WordPress debería tener. Si aún no tiene Debug Bar instalado en su entorno de desarrollo, debe hacerlo lo antes posible..

Una vez que tenga instalados estos dos complementos, podrá acceder a una consola desde la barra de administración, donde puede ejecutar el código PHP. Ahora, en lugar de modificar un archivo de tema, guardar y actualizar puede simplemente experimentar con el código directamente en el navegador.

Simplemente haga clic en "Ejecutar" y vea los resultados en la parte inferior de la pantalla. La mejor parte es que cualquier error que genere se mostrará en el cuadro de resultados, no en el frente de sus sitios. Los errores fatales rompen la consola de depuración, no su sitio.

Por cierto, solo he arañado la superficie de lo que Debug Bar puede hacer. Además, tanto Debug Bar como Debug Console, así como un montón de otras utilidades geniales, se incluyen en el complemento para desarrolladores, que recomiendo encarecidamente. A medida que aprendas a trabajar con metadatos, también puedes encontrar el plugin Debug Bar Post Meta también muy útil..

var_dump vs print_r

Ahora que tiene un lugar para realizar sus pruebas, ¿cómo explora los interiores de una matriz? Para este trabajo, PHP nos brinda dos funciones de utilidad que nunca usaríamos para crear una salida de front-end, pero son perfectas para el trabajo de diagnóstico.-var_dump () y print_r ().

Ambas funciones toman una variable que contiene una matriz como entrada y generan su contenido para que lo examinemos. var_dump () contiene más información, como el tipo de datos (cadena, booleano, entero, etc.) y la longitud de los datos, mientras que print_r () está diseñado para ser más legible para los humanos y omite esta información adicional.

Usando var_dump para encontrar un índice o clave

Aquí hay una captura de pantalla de un var_dump de los metadatos para una publicación. Muestra cómo me desglosé en un solo campo. Mi objetivo era obtener el valor del campo del título del meta creado por el complemento WordPress SEO by Yoast.

Como puede ver en el var_dump, generé a partir de todos los campos de meta para la ID # 1 de la publicación con get_post_meta (1); Estaba trabajando con una matriz asociativa y multidimensional, que contenía una matriz indexada con un solo índice. Al examinar el var_dump, encontré que la clave que necesitaba era '_yoast_wpseo_title' y que la información real que necesitaba estaba en el primer índice. Para acceder a eso puse la clave '_yoast_wpseo_title' en su propia variable, y luego hice eco del primer índice como este:

 $ meta = get_post_meta (1); $ seo_title = $ meta ['_ yoast_wpseo_title']; eco '
Título de SEO: '. $ seo_title [0]. '
';

Este es un buen ejemplo para ilustrar la estrategia para encontrar la clave necesaria, pero no es la forma más eficiente de obtener la información, una vez que conozca la clave. Entonces, después de hacer el trabajo de detective para encontrar la clave correcta, especificaría la clave directamente en la llamada a get_post_meta (). Cuando solo necesitamos una clave, puede especificarla directamente en el segundo argumento de get_post_meta ().

Es importante tener en cuenta que get_post_meta (1, '_yoast_wpseo_title'); no devolverá el valor que necesitamos, sino que devolverá una matriz. Al agregar true para el tercer argumento 'single' podemos obtener solo el primer índice, que es lo que necesitamos.

Entonces, para repetir directamente el título de SEO, todo en una línea tendríamos que hacer esto:

 get_post_meta (1, '_yoast_wpseo_title', true);

Utilizando get_user_meta ()

Hasta ahora, en esta serie, te he mostrado cómo trabajar con el wp_postmeta tabla, que contiene todos los campos personalizados agregados a un tipo de publicación.

Los usuarios también pueden tener campos personalizados. Los metadatos de usuario, los campos adicionales agregados a los perfiles de usuario funcionan de la misma manera que los metadatos de publicación, pero se almacenan en el wp_usermeta mesa. Cuando se trabaja con metadatos de usuario, en lugar de get_post_meta (), usamos get_user_meta ().

Estas dos funciones funcionan de manera idéntica, solo obtienen sus datos de dos tablas diferentes en la base de datos.

Aquí hay un ejemplo usando get_user_meta () para mostrar una imagen personalizada como un enlace a las publicaciones de un autor:

 $ users = array (55, 89, 144, 233, 377); foreach ($ users como $ user) $ link = get_author_posts_url ($ user); $ img = get_user_meta ($ user, 'link_img',; echo '';  // fin de bucle foreach

Hasta la próxima…

En las dos partes de esta serie, hemos examinado los distintos tipos de metadatos, cómo se almacenan y cómo podemos recuperarlos. Además, hemos analizado los dos tipos de matrices que ofrece PHP, y cómo esto corresponde a los metadatos asociados con las publicaciones y los usuarios..

En la siguiente parte de la serie, analizaremos exactamente cómo podemos iterar a través de cada tipo de datos para que tengamos la potencia y flexibilidad para personalizar la salida de nuestras plantillas..