Cómo mostrar los metadatos de una publicación de WordPress

En mi última serie de artículos, analizamos los conceptos de la programación orientada a objetos desde la perspectiva del principiante. El objetivo de la serie era tomar a aquellos que no estaban familiarizados con la programación orientada a objetos en PHP y explorar los aspectos fundamentales del paradigma en el contexto de WordPress..

Si no tuvo la oportunidad de leer la serie, puede leer un breve resumen (junto con los enlaces a cada artículo de la serie) en la publicación final.

Durante el transcurso de la serie, una de las cosas que hicimos para ayudar a demostrar los principios orientados a objetos, así como algunas de las características de la API de WordPress, fue crear un complemento.. 

Específicamente, creamos un complemento que nos permitió ver todos los metadatos de publicación asociados con una publicación determinada dentro del panel de WordPress.

El complemento está disponible para descargar en GitHub, donde también puede explorar el código fuente, ver los comentarios del código y, en general, ver todo lo que se creó para crear el complemento cuando lo desarrollamos..

Desde que se escribió esa publicación en particular, recibí una serie de preguntas diferentes, una de las cuales ha sido cómo tomamos los datos que se muestran en el panel de control, es decir, los metadatos de la publicación, y los mostramos en la parte delantera de la web. sitio.

En este artículo, vamos a echar un vistazo a la extensión del complemento para que podamos mostrar los datos en una sola página de publicación. Vamos a hablar sobre cómo hacer esto dado nuestro código existente, cómo hacerlo, y también vamos a hablar sobre por qué esto puede no ser una buena idea..

Así que con eso dicho, vamos a empezar.

Ramificaciones de Extender el Plugin

Antes de comenzar a planificar cómo vamos a expandir realmente el complemento, creo que vale la pena tener una breve discusión sobre por qué mostrar este tipo de información en la interfaz, aunque es posible, puede que no sea una buena idea..

Es decir, creo que esto justifica que, al tratar con ciertos tipos de datos, es importante tener en cuenta las ramificaciones de lo que optamos por hacer cuando construimos productos para otros y cómo administramos los datos..

En definitiva, solo porque nosotros puede hacer algo no significa que nosotros debería hazlo.

Una mirada a los datos

Piénselo de esta manera: los metadatos que se asocian con una publicación determinada se almacenan en la base de datos, algunos por WordPress, algunos por temas y otros por complementos, todos los cuales utilizan la información para sus propias necesidades específicas..

Si echa un vistazo a la imagen de arriba, notará que algunas filas están identificadas por teclas con un guión bajo. Por ejemplo, tenemos _edit_lock_edit_last y luego algunos valores numéricos. Este es un ejemplo de los datos que WordPress utiliza para administrar internamente el estado de las publicaciones..

Las otras claves que ve tienen que ver con los complementos que he instalado en mi instalación local de WordPress y se usan para demostrar cómo otras utilidades pueden guardar datos en la tabla de metadatos y luego relacionarlos con la publicación dada..

Cuál es el problema?

El problema con la visualización de toda esta información en la interfaz es que podría estar mostrando demasiada información al usuario. 

En el caso anterior, no hay nada que sea particularmente peligroso o sensible que pueda ayudar a comprometer la instalación, pero eso no significa que siempre será así. Aún más, existe una gran posibilidad de que termines mostrando información relacionada con un complemento o tema que nunca quiso que se mostrara su información..

Además, para muchas personas, o incluso la mayoría, que visitan un blog, ver la información que se muestra en la parte delantera del blog se verá como ruido. Es una jerga técnica que no significa nada. Por eso creo que mantener esta información relegada al panel de control es el mejor lugar para hacerlo..

Pero vamos a extender el complemento?

En resumen, sí, pero no porque creo que mostrar este tipo de información al usuario es una buena idea, sino porque existe una aplicación práctica que viene con la extensión de un complemento existente, los beneficios de aprovechar el código existente y ver las ramificaciones negativas de haciendo tal.

Así que sí, a veces, las mejores lecciones pueden venir de implementar ideas que pueden no ser buenas en retrospectiva. 

Pero eso está bien. Así es como aprendemos, ¿verdad??

Además, hay todavía Algunas lecciones prácticas que vienen con el aprendizaje de cómo ampliar una base de código existente.

Ampliación de Meta Manager de un solo puesto

Al igual que con todos los tutoriales que comparto, trato de planificar exactamente qué Lo que hacemos es hacerlo antes de hacerlo para que no estemos codificando a través de un montón de trabajo de adivinanzas, y para que tengamos un plan de acción sobre cómo diseñar nuestra solución..

Así que, antes de continuar, si no está revisando el Meta Manager de Single Post, hágalo ahora y continuaremos.

Una vez hecho esto, esto es lo que planeamos hacer:

  1. Usaremos el tema predeterminado de veinte catorce como base para nuestro ejemplo.
  2. Presentaremos un directorio público que se utilizará para mostrar la información en el público Lado del blog específicamente en el contexto de las publicaciones individuales..
  3. Definiremos enlaces que nos permitirán agregar información al contenido de la publicación para que los metadatos de la publicación puedan mostrarse en la parte inferior del contenido. Usaremos una tabla rudimentaria para esto que heredará los estilos del tema actual. Tenga en cuenta que al hacer esto, puede terminar teniendo algunos estilos realmente limpios, y puede terminar teniendo algunos estilos realmente débiles. Estos estarán listos para que los implementes por tu cuenta..
  4. Luego aprovecharemos la plantilla que creamos en la versión inicial del complemento para asegurarnos de recuperar los metadatos de la publicación para la publicación dada para mostrarla en el extremo delantero..

Nada demasiado complicado, ¿verdad? Solo necesitamos ser precisos en nuestros pasos. Entonces empecemos.

Presentar el Directorio Público

Suponiendo que ya tiene activados veinte y catorce y que el plugin está instalado, comencemos a trabajar en la introducción de nuestra funcionalidad. Lo primero que tenemos que hacer es 

  • introducir un público directorio
  • añade el Single_Post_Meta_Manager_Public clase
  • incluir la clase en el archivo del complemento del núcleo

Después de agregar los archivos, lo anterior se puede hacer mediante las siguientes líneas de código al dependencias de carga funcionar en incluye / single-post-meta-manager.php.

función privada load_dependencies () require_once plugin_dir_path (dirname (__FILE__)). 'admin / class-single-post-meta-manager-admin.php'; require_once plugin_dir_path (dirname (__FILE__)). 'public / class-single-post-meta-manager-public.php'; require_once plugin_dir_path (__FILE__). 'class-single-post-meta-manager-loader.php'; $ this-> loader = new Single_Post_Meta_Manager_Loader (); 

Note que la única nueva línea es la segunda. requerir una vez declaración que importa el archivo de clase. 

Después de eso, vamos a definir las propiedades, el constructor y los métodos para el Single_Post_Meta_Manager_Public clase:

version = $ version;  / ** * Utiliza el parcial ubicado en el directorio de administración para representar los metadatos de la publicación * al final del contenido de la publicación. * * @param string $ content El contenido de la publicación. * @return string $ content El contenido de la publicación, incluidos los metadatos de las publicaciones proporcionadas. * / public function display_post_meta_data ($ content) ob_start (); require_once plugin_dir_path (dirname (__FILE__)). 'admin / partials / single-post-meta-manager.php'; $ template = ob_get_contents (); $ contenido. = $ plantilla; ob_end_clean (); devolver $ contenido; 

A continuación, necesitamos crear el Meta Manager de Postes Únicos. define_public_hooks función. Esto debería verse así:

get_version ()); $ this-> loader-> add_action ('the_content', $ public, 'display_post_meta_data'); 

A continuación, necesitamos definir una llamada a esta función dentro del constructor. Es decir, justo debajo de la $ this-> define_admin_hooks (); línea, añadir $ this-> define_public_hooks (); llamada.

Suponiendo que todo ha ido bien, debería poder activar el complemento, cargar cualquier publicación y ver los mismos metadatos que ahora se muestran en la parte frontal de la publicación, así como en el panel de la publicación:

Resumen

Como se mencionó anteriormente en este tutorial, mostrar este tipo de información en la parte delantera de una publicación no es necesariamente la mejor idea; Sin embargo, aprender a agregar prácticamente a un complemento existente introducirá una funcionalidad completamente nueva y también reutilizará algunos de los componentes existentes..

En última instancia, la clave para llevar es doble:

  • Aprovechar el código existente es una cosa poderosa
  • Exponer datos que son irrelevantes para los usuarios es una idea peligrosa

Entonces, después de leer este tutorial en particular, tenga en cuenta que no estoy necesariamente respaldando hacer esto en un entorno de nivel de producción, sino más bien como una herramienta de aprendizaje. Es decir, úsalo bajo tu propio riesgo..

Como de costumbre, deje todas sus preguntas, comentarios y más en el feed a continuación.!