Hay muchos beneficios en el aprendizaje de la programación orientada a objetos si es un desarrollador de WordPress. El código OOP puede ayudarlo a organizar su código y hacerlo reutilizable. Es más extensible, más fácil de mantener y alentar una cultura del uso de modelos de diseño. Esta es la segunda publicación de nuestra serie de seis partidos que se centra en WordPress para desarrolladores avanzados. Esta serie sigue de acuerdo con nuestro popular desarrollo de WordPress para usuarios intermedios, que le han presentado algunos temas de codificación, incluido el desarrollo de temas en detalle, la preparación de temas, la creación de complementos, tipos de publicaciones personalizadas y taxonomías, consultas y bucles, campos personalizados y de metadatos. ubicación.
La semana pasada miramos la base de OOP. En este tutorial, comenzará a construir complementos con nuevos conocimientos sobre técnicas de programación orientadas a objetos. Solo comenzaremos a usarlo para hacer cambios estructurales en el código utilizando los elementos básicos del enfoque del objeto. El código de terceros en complementos y temas a menudo usa una gran cantidad de “espagueti”, también conocido como “vaquero”, en comparación con las plataformas que usan OOP. ¡Hasta que termines de leer esta publicación, espero que te inspire para probar OOP y limpiar tu código! Vamos a atascarse.
Nota: Es importante tener un conocimiento práctico sobre PHP, ya que este es el lenguaje básico de WordPress para esta serie, que cubre temas avanzados para los desarrolladores. Me referiré a los fragmentos de código en esta serie. También es importante, especialmente para este tutorial, tener conocimiento básico sobre cómo crear un complemento. ¿Necesitas ayuda? Consulte las nociones introductorias sobre el desarrollo del complemento de WordPress: Guía final. Redacción de complementos orientados a objetos: el proyecto para el propósito de esta lección, para crear un complemento que agregue un formulario de suscripción de acuerdo con el contenido de nuestras publicaciones únicas. El formulario de suscripción enviará sus datos directamente a MailChimp. Este es un negocio simple, que podría hacerse fácilmente con el código de procedimiento, pero requiere un enfoque de OOP. Este es un proyecto en el que la extensibilidad es fácil de ver. Puede agregar el formulario a otras ubicaciones, puede implementarlo para operar con otras API como Madmimi o incluso para agregar datos a la base de datos local. Verás lo fácil que es eso más adelante. Código de procedimiento Primero analicemos el código de procedimiento completo, comprendamos lo que está sucediendo y luego hagamos una reestructuración para agregar un poco de Magic OOP.
La idea CB790E16C4AAE22F91E32407C4DCD9C7 está cargada.
Hay dos cosas que debemos hacer: crear un formulario en el frente y enviar los datos ingresados a MailChimp. La función msf_post_form () se encarga de la primera. Está conectado a The_Content y devuelve el contenido tal como está, si no estamos en una página singular.
De lo contrario, creamos un formulario que se envía al archivo admin-ajax.php. Agregué dos elementos de seguridad al formulario. Lo más obvio es el campo sin campo, cuanto más la manguera es el campo de texto de nombre del honeypot. Este campo no se usa y está oculto por CSS. Deliberadamente le di un nombre frecuente (en lugar de “miel”) para atraer robots para completarlo. La función msf_assets () agrega la hoja de estilo para nosotros. Tenga en cuenta que lo registro en esta posición, pero lo puse en la cola en msf_post_form (). Esto asegura que se cargue solo cuando sea necesario. Finalmente, la función MSF_FORM_SUBMIT> es responsable de administrar el envío. Una vez que se revisan Nonce y Honeypot, enviamos una solicitud de publicación remota a la ubicación apropiada con los datos necesarios. Consulte los documentos de la API de MailChimp para obtener más información. Hay algunos controles adicionales que podríamos (deberíamos) hacer, pero este no es el objetivo principal de este tutorial, por lo que los enumeraré aquí.
Verifique el lado del servidor de correo electrónico y
Servidor Match (US6) en URL con el servidor en la tecla API
Agregué algunos estilos básicos para que la forma encajara maravillosamente en el tema de veinte quince.
La idea CB790E16C4AAE22F91E32407C4DCD9C7 está cargada.
Formulario de suscripción
Posibles complicaciones Este código está bien por el momento, pero cuando intenta agregar funciones, se vuelve mucho más complejo. ¿Cómo manejarías más listas? ¿Qué tal agregar la misma forma a otras partes del sitio? ¿Qué pasa si desea cambiar rápidamente entre las listas de correspondencia? Llegará con muchas declaraciones IF en su código, lo que hace que sea difícil de seguir y difícil de mantener, sin mencionar algunas funciones largas que debe encontrar. Además, encuentro que poner todas nuestras acciones en todas partes es perjudicial para la calidad del código. Remediquemos algunos de estos problemas con nuestros conocimientos básicos OOP. OOP brilla en nuestras mentes para reescribir desde cero y copiar y pegar el código existente cuando sea necesario. Para la mayoría de los proyectos, me gusta crear una clase de envoltorio para encapsular toda la funcionalidad. Aquí está el esqueleto básico.

La idea CB790E16C4AAE22F91E32407C4DCD9C7 está cargada.
Transmita una matriz de configuración al nuevo objeto. Esto facilitará la configuración de cosas para diferentes entornos, si es necesario. Puedo cambiar la matriz y la clase usará la información allí, similar a cómo wp -config.php para WordPress. La función del constructor se ejecuta tan pronto como se crea la clase, lo que significa que aquí es donde ponemos todas nuestras acciones y filtros:
La idea CB790E16C4AAE22F91E32407C4DCD9C7 está cargada.
Encuentro esta estructura mucho mejor porque se autodocumentan. Puede ver todos los puntos donde la clase se conecta a WordPress en un solo lugar. Tenga en cuenta que al usar ganchos en las clases, no puede simplemente especificar el nombre de la función, debe usar la convención de matriz ($ this, ‘name_of_function’). Esto se debe a que la función a la que nos referimos está dentro de la clase, no en el espacio global. También eliminé los prefijos de función y simplifiqué su nombre, haciéndolos más fácil establecer el propósito. Todo lo que queda es introducir estas funciones en el cuerpo de la clase. Los dos lugares donde observará cambios son los nombres de las funciones (que se han simplificado) y el uso de la clave API que ahora se toma de la propiedad $ API_KEY. Aquí está el código OOP completo:
La idea CB790E16C4AAE22F91E32407C4DCD9C7 está cargada.
El código ahora es mucho más fácil de entender, mejor estructurado y más extensible. Extensiones básicas podemos hacer mucho para expandir nuestro código. Centrémonos en dos aspectos: control de campos de formulario y agregando otros proveedores. Campos de formulario Según nuestras necesidades, podría haber algunos campos de formulario más. Podríamos codificarlos cada vez que necesitamos un cambio, pero prefiero usar ganchos para controlar tales cosas. Recuerde que, incluso si no publica su trabajo en público, puede usarlo en varios proyectos. Facilitar la expansión es una inversión en la reducción del volumen de trabajo a lo largo del tiempo.
Para comenzar, separaré todo lo que los componentes opcionales tienen que tener. ¡Este es un gran lugar para una discusión rápida! ¿Considera que el campo de correo electrónico es obligatorio o es opcional para su aplicación? Podría ir de todos modos. Si siempre usa esta implementación para modificar las listas de destinatarios, entonces puede ser una buena decisión codificarla. Si puede extenderlo para modificar boletines informativos, cree nuevas listas (procesos donde no se requiere ninguna dirección de correo electrónico, debe considerar las opciones. Para el propósito de este ejemplo, lo consideraré opcional, pero implícitamente lo incluye. Así es como está cambiando la forma de la forma (), teniendo en cuenta lo anterior: la idea CB790E16C4AE22F91E32407C4DCD9C7 está cargada.
Hemos creado una variable $ predeterminada que contiene una matriz de campo HTML. El único que quiero imponer como predeterminado es el correo electrónico, así que agregué eso. Sigo aplicando un filtro a la matriz predeterminada. El filtro me permite extender la funcionalidad fácilmente agregando tantos campos como sea posible. Para agregar un campo de “edad”, simplemente use el filtro desde su propio complemento u otro. Para agregar un campo de edad de otro complemento, puede hacer algo como esto:

La idea CB790E16C4AAE22F91E32407C4DCD9C7 está cargada.
Agregar otro proveedor Otro aspecto de la aplicación que está preparado para la extensión es el proveedor. La capacidad de elegir entre MailChimp, Madmimi u otras listas de correo electrónico sería maravillosa, pasemos a él. En lugar de usar las declaraciones IF en nuestro controlador de referencia, mucho tiempo, usar una función separada que lanza el controlador correcto. Comencemos reescribiendo nuestra matriz de configuración: la idea CB790E16C4AE22F91E32407C4DCD9C7 está cargada.
Mirando esta matriz, podría pensar: “¿Por qué es esto tan complejo? ¿No podría la matriz del proveedor ser una lista de valores clave en el que la clave es el proveedor y el valor es la clave API? “. La respuesta a esto es: ¡seguro que podría! La razón por la que elegí ir con un nivel más profundo es pensar antes. Realmente no entramos en autenticación aquí, mientras que la mayoría de la API lo requiere. Esto significa que necesitaremos al menos dos información para cada proveedor. Además, es posible que deseemos hacer que las llamadas API sean más eficientes, agregando la URL básica y otra información a esta matriz. En este momento, tendremos que reescribir un poco nuestro código para trabajar con nuestra nueva matriz de proveedores. Debido a que intentamos pensar antes, los cambios futuros probablemente no requerirán cambios en el código existente. Ahora que nuestra matriz de configuración tiene una estructura diferente, debemos actualizar el constructor. En lugar de una propiedad API_Key, utilizaré proveedores que contengan la información de cada proveedor que usamos.
La idea CB790E16C4AAE22F91E32407C4DCD9C7 está cargada.
Luego, para cambiar el nombre de SubsissionHandler () en MailChimphandler () y asegúrese de que se refiera a la clave API en nuestra propiedad de nuevos proveedores. El cambio se puede ver en la función wp_remote_post (), eche un vistazo a continuación: Cargue la idea CB790E16C4AE22F91E32407C4DCD9C7
Finalmente, debemos lanzar el controlador correcto en el momento adecuado. Para hacer esto, cambiemos nuestra matriz de configuración por última vez, incluido el controlador que queremos usar.
La idea CB790E16C4AAE22F91E32407C4DCD9C7 está cargada.
También agregaré el proveedor a las propiedades de nuestra clase, asignándolo al constructor:
La idea CB790E16C4AAE22F91E32407C4DCD9C7 está cargada.
Cuando alguien envía el formulario, todavía se llama la función SummissHandler, pero ya no existe, porque lo renombré en MailChimphandler. Vamos a recrear ahora la función de gestión de envío:
La idea CB790E16C4AAE22F91E32407C4DCD9C7 está cargada.
Nuestro administrador de envíos verifica si hay un método para procesar la acción. Busque el nombre del proveedor agregado con “Handler”. Si no se encuentra el método, muestra una notificación. De lo contrario, ejecute el método. El código completo porque hice muchos cambios, publico debajo del código completo de complemento. Intente no copiar y pegar el código a continuación; Llegue a él usando los cambios, porque le dará una mejor comprensión de lo que está sucediendo.
La idea CB790E16C4AAE22F91E32407C4DCD9C7 está cargada.
Las palabras finales que trabajan con OOP requieren algo hábito, pero una vez que caiga el dinero, ¡habrá fluido!Luché con él y en el primer intento, así que no te desanime si necesitas algunos pases antes de hacer clic.Finalmente, hay un número muy posible de terminaciones y hay mejores prácticas de OOP que podría usar para mejorar aún más el código.Si se siente hábil en el material que he cubierto hasta ahora, le insto a que eche un vistazo a las interfaces, que podría usar para agregar una integración más modular con los terceros servicios. ¿Encontró este tutorial útil?¿Por qué quieres aprender el desarrollo de WordPress?¿De qué quieres saber más?Háganos saber en los comentarios a continuación.
Etiquetas:
código
Desarrollo de desarrollo avanzado: redacción de complementos orientados a objetos
Tags Desarrollo de desarrollo avanzado: redacción de complementos orientados a objetos
homefinance blog