Programación orientada a objetos en WordPress documente el complemento II

En este punto de la serie, estamos listos para avanzar y redondear nuestro complemento documentando nuestros archivos, clases, funciones, variables y más.

Aunque este es el último paso que tenemos para completar el complemento, no es el último post de la serie, ya que continuaremos examinando algunos temas avanzados en programación orientada a objetos..

Pero antes de hacerlo, llevemos nuestro complemento a la versión 1.0 poniendo en práctica todo lo que aprendimos en el artículo anterior..

Por supuesto, como con todos artículos anteriores, recomiendo ponerse al día con todo lo que hemos cubierto hasta ahora para que esté completamente al día, no solo con el trabajo que hemos hecho en el artículo anterior, sino también con la forma en que llegamos a los puntos finales estas discutiendo en este articulo.

  1. Una introducción
  2. Las clases
  3. Los tipos
  4. Estructuras de control: sentencias condicionales
  5. Estructuras de control: Bucles
  6. Funciones y atributos
  7. Alcance
  8. Construyendo el Plugin I
  9. Construyendo el Plugin II
  10. Documentar el Plugin I

Con todos los temas cubiertos y revisados, comencemos a documentar cada uno de nuestros archivos.

Documentando el Plugin

Hay varias formas diferentes en las que podemos documentar este complemento:

  • Podríamos documentar todos los encabezados de los archivos primero, luego podríamos regresar y documentar las clases, luego podríamos regresar y documentar las variables, luego podríamos documentar las funciones.
  • Podríamos documentar cada archivo a la vez y tener una breve discusión sobre todo lo que se incluye por archivo..

Obviamente, la opción producirá más documentación por sección, pero debería resultar en un artículo mucho menos tedioso y en una comprensión mucho más sencilla del flujo de control para todo el complemento..

Para ello, trabajaremos en el complemento, archivo por archivo, presentando la documentación de cada pieza de código que tenemos y luego analizaremos los puntos de interés que siguen al código..

Finalmente, nos aseguraremos de referirnos a la versión final del complemento al final del artículo. Dicho esto, vamos a empezar.

El administrador único de mensajes posteriores

Recuerde que el archivo principal para iniciar el complemento es el archivo single-post-meta-manager.php ubicado en la raíz del directorio del complemento.

Así es como se ve la versión completamente documentada del archivo. Lea cada comentario prestando mucha atención, no solo al formato que sigue, sino al contenido que proporciona..

correr();  // Llame a la función anterior para comenzar la ejecución del complemento. run_single_post_meta_manager (); 

En el código anterior, observe que hemos definido un encabezado de archivo según las convenciones que describimos en el artículo anterior. También mantuvimos las etiquetas de encabezado de complemento requeridas para que WordPress las lea correctamente.

Tenga en cuenta que, en este caso, los hemos incluido bajo una costumbre @ wordpress-plugin etiqueta. Esto no es necesario pero ayuda a separar los comentarios del encabezado del archivo de los comentarios requeridos del complemento.

Por último, tenga en cuenta que hemos subido la versión de este complemento hasta 1.0, y también hemos dado a este plugin la @paquete valor de SPMM que es corto de Post Manager de un solo post. Usaremos esto a lo largo del plugin..

los incluye Directorio

A continuación, vamos a centrar nuestra atención en todos los archivos que se encuentran en el directorio de inclusión. 

Ya que estos archivos son necesarios antes que cualquier cosa en el directorio de administración, tiene sentido mirar cada uno de estos archivos individualmente, y luego completar nuestra discusión con los archivos restantes en el directorio de administración..

El administrador único de mensajes posteriores

plugin_slug = 'single-post-meta-manager-slug'; $ this-> version = '1.0.0'; $ this-> load_dependencies (); $ this-> define_admin_hooks ();  / ** * Importa las clases de administración de Single Post Meta, y el Meta Loader de Single Post. * * La clase de administración de Single Post Meta Manager define todas las funciones únicas para * introducir una funcionalidad personalizada en el panel de WordPress. * * El cargador de Meta Manager de Single Post es la clase que coordinará los enlaces y devoluciones de llamadas * de WordPress y el complemento. Esta función crea una instancia y establece la referencia a la propiedad de clase * $ loader. * * @access private * / private function load_dependencies () require_once plugin_dir_path (dirname (__FILE__)). 'admin / class-single-post-meta-manager-admin.php'; require_once plugin_dir_path (__FILE__). 'class-single-post-meta-manager-loader.php'; $ this-> loader = new Single_Post_Meta_Manager_Loader ();  / ** * Define los ganchos y las funciones de devolución de llamada que se utilizan para configurar las hojas de estilo de complementos * y el cuadro de metadatos del complemento. * * Esta función se basa en la clase de administrador de Meta Manager de solo publicación y en la propiedad del cargador de Meta Manager de única publicación. * * @access privado * / private function define_admin_hooks () $ admin = new Single_Post_Meta_Manager_Admin ($ this-> get_version ()); $ this-> loader-> add_action ('admin_enqueue_scripts', $ admin, 'enqueue_styles'); $ this-> loader-> add_action ('add_meta_boxes', $ admin, 'add_meta_box');  / ** * pone esta clase en movimiento. * * Ejecuta el complemento llamando al método de ejecución de la clase del cargador que * registrará todos los ganchos y las funciones de devolución de llamada utilizadas en el complemento * con WordPress. * / public function run () $ this-> loader-> run ();  / ** * Devuelve la versión actual del complemento a la persona que llama. * * @return string $ this-> version La versión actual del complemento. * / public function get_version () return $ this-> version;  

Claramente hay mucho de nuevos comentarios que se han introducido en este archivo en particular; sin embargo, debe ser muy autoexplicativo en cuanto a lo que están haciendo cada propiedad de clase, el constructor y las funciones internas.

La clave a tener en cuenta, además de cómo se coordina la información a través del complemento, es cómo nos hemos adherido a los estándares definidos en el artículo anterior.. 

Note, sin embargo, que nosotros tener tomado la libertad si no usar ciertas etiquetas y / o características de la documentación cuando no son relevantes. Esto es algo que seguiremos haciendo durante el resto del artículo..

El cargador único de Meta Manager

acciones = array (); $ this-> filters = array ();  / ** * Registra las acciones con WordPress y los objetos respectivos y * sus métodos. * * @param string $ hook El nombre del enlace de WordPress en el que estamos registrando una devolución de llamada. * @param object $ component El objeto que contiene el método que se llamará cuando se active el gancho. * @param string $ callback La función que reside en el componente especificado. * / public function add_action ($ hook, $ component, $ callback) $ this-> actions = $ this-> add ($ this-> actions, $ hook, $ component, $ callback);  / ** * Registra los filtros con WordPress y los objetos respectivos y * sus métodos. * * @param string $ hook El nombre del enlace de WordPress en el que estamos registrando una devolución de llamada. * @param object $ component El objeto que contiene el método que se llamará cuando se active el gancho. * @param string $ callback La función que reside en el componente especificado. * / public function add_filter ($ hook, $ component, $ callback) $ this-> filters = $ this-> add ($ this-> filters, $ hook, $ component, $ callback);  / ** * Registra los filtros con WordPress y los objetos respectivos y * sus métodos. * * @access private * * @param array $ hooks La colección de ganchos existentes para agregar a la colección de ganchos. * @param string $ hook El nombre del enlace de WordPress en el que estamos registrando una devolución de llamada. * @param object $ component El objeto que contiene el método que se llamará cuando se active el gancho. * @param string $ callback La función que reside en el componente especificado. * * @return array La colección de ganchos que están registrados con WordPress a través de esta clase. * / función privada add ($ hooks, $ hook, $ component, $ callback) $ hooks [] = array ('hook' => $ hook, 'component' => $ component, 'callback' => $ callback) ; devuelve $ ganchos;  / ** * Registra todos los filtros y acciones definidos con WordPress. * / public function run () foreach ($ this-> filter as $ hook) add_filter ($ hook ['hook'], array ($ hook ['component'], $ hook ['callback']));  foreach ($ this-> actions as $ hook) add_action ($ hook ['hook'], array ($ hook ['component'], $ hook ['callback']));  

Tenga en cuenta que esta clase es más o menos un componente central del complemento, ya que coordina todas las acciones y los filtros utilizados en todo el complemento. Este complemento centraliza todo el registro y la coordinación de los ganchos que se utilizan en todo el complemento..

Finalmente, cuando correr se llama, todos los enlaces se registran con WordPress para que el complemento se active, llamará a cada una de las acciones y filtros registrados.

los administración Directorio

En este punto, estamos listos para dirigir nuestra atención a los archivos ubicados en el directorio de administración del complemento. 

Aunque el archivo consta de un par de archivos PHP, también consta de un archivo CSS. A los efectos de este artículo, no vamos a documentar los archivos CSS; sin embargo, el códice de WordPress hace definir documentación para esto.

Por ahora, sin embargo, vamos a continuar documentando las clases y archivos que existen en el administración directorio.

Administrador de Meta Manager de una sola publicación

La clase de administrador de Meta Manager de Single Post tiene una única responsabilidad: definir la funcionalidad para representar la meta box y sus estilos para el panel de control.

version = $ version;  / ** * Encola la hoja de estilo responsable del diseño del contenido de este * cuadro de meta. * / public function enqueue_styles () wp_enqueue_style ('single-post-meta-manager-admin', plugin_dir_url (__FILE__). 'css / single-post-meta-manager-admin.css', array (), $ this- > versión, FALSO);  / ** * Registra el cuadro de metadatos que se utilizará para mostrar todos los metadatos de publicación * asociados con la publicación actual. * / public function add_meta_box () add_meta_box ('single-post-meta-manager-admin', 'Single Post Meta Manager', array ($ this, 'render_meta_box'), 'post', 'normal', 'core' );  / ** * Requiere el archivo que se utiliza para mostrar la interfaz de usuario del cuadro de meta de publicación. * / public function render_meta_box () require_once plugin_dir_path (__FILE__). 'partials / single-post-meta-manager.php';  

Observe que la clase anterior tiene muy pocos detalles funcionales. Principalmente, la clase mantiene una referencia a la versión del complemento, la hoja de estilo utilizada para diseñar el cuadro de metadatos y la función requerida para procesar el cuadro de metadatos..

Recuerde que todo esto está configurado dentro del archivo del complemento del núcleo y el cargador. Esto ayuda a desacoplar la lógica que existe dentro del complemento para que cada clase pueda enfocarse en cuál es su propósito principal.

Por supuesto, la parte final del complemento se basa en el archivo parcial real que contiene el marcado necesario para mostrar el cuadro de meta.

Parámetros de un solo administrador parcial

 
$ post_meta_value) ?>

Esto debería ser relativamente autoexplicativo; sin embargo, para completar, tenga en cuenta que este archivo toma la ID de la publicación actual (mediante el uso del get_the_ID () función), lee los metadatos de la publicación y luego itera a través de ella creando una tabla que muestra las claves y los valores.

Finalizando el plugin

En este punto, hemos completado la implementación de nuestro complemento. Desde poner en práctica las prácticas de programación orientadas a objetos, hasta documentar el código..

Puedes obtener la versión final del complemento en GitHub; sin embargo, continuaremos nuestra discusión orientada a objetos en algunas publicaciones más, de modo que podamos explorar algunos temas más avanzados como la herencia, la abstracción y otros temas..

Mientras tanto, si tiene preguntas o comentarios sobre el complemento, no dude en dejarlos en los comentarios.!