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.
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.
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 y _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..
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..
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.
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:
público
Lado del blog específicamente en el contexto de las publicaciones individuales..Nada demasiado complicado, ¿verdad? Solo necesitamos ser precisos en nuestros pasos. Entonces empecemos.
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
público
directorioSingle_Post_Meta_Manager_Public
claseDespué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:
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:
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.!