✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Detener la ejecución del complemento sin una dependencia

7

Si aborda gran parte del desarrollo de complementos de WordPress desde una perspectiva orientada a objetos, eventualmente llegará a un punto en el que no tendrá mucha interacción directamente con el núcleo de WordPress.

Y, en mi opinión, eso es algo bueno. Es una señal de una arquitectura que está estructurando correctamente su código. Eso es:

  1. Tienes WordPress sentado en el nivel fundamental,
  2. Tiene un conjunto de clases que se encuentran justo encima de WordPress responsables de enviar información hacia y desde WordPress entre el complemento,
  3. Y tiene el resto de su código que comprende el resto de la funcionalidad.

La forma en que esto se implementa puede variar, pero la forma general en que imagino esto es la misma forma en que tiendo a pensar en la aplicación estándar de N niveles donde tiene la capa de datos, la capa de aplicación y el front-end.

Excepto por esta vez, tiene WordPress, una capa para comunicarse con WordPress y el resto de su código y, ya sabe, el resto de su código.

Cómo se puede organizar un complemento.

Entonces, ¿qué sucede cuando desea detener la ejecución del complemento cuando tiene que interactuar con una dependencia de terceros y solo debe ejecutarse si esa dependencia está presente?

Detener la ejecución del complemento

Debido a la naturaleza de PHP y WordPress, hay algunas formas de hacerlo. El código que voy a compartir no prescribe la forma de hacerlo.

En cambio, esta es una forma de hacerlo (que se extrajo de algo que está en desarrollo). Además, también mostraré cómo interactúa con algunos otros componentes de los complementos.

1 El Constructor

Si lee suficientes artículos sobre WordPress y la programación orientada a objetos, es probable que descubra que los constructores no deben usarse para definir ganchos. Y estoy de acuerdo.

Crea un nivel innecesario de acoplamiento y hace que las pruebas sean más difíciles. Entonces, ¿cuál es el propósito de un constructor en código basado en WordPress?

Lo uso por las mismas razones que esperaría en cualquier otro idioma: para inicializar las propiedades de la clase. En el siguiente código, verás tres cosas:

  1. Inicializo una propiedad,
  2. Verifico si existe una dependencia de terceros,
  3. Si no es así, agrego un mensaje de error,
  4. Actualizo la propiedad.

Claro, es detallado, pero tampoco recurre a un código inteligente para inicializar valores.

(A medida que envejezco, más me gusta el código específico, ya que hace que sea más fácil de leer, aprender y seguir adelante a un ritmo más rápido que la alternativa).

2 El método de inicialización

Dado que no estamos usando un constructor para trabajar con ganchos de WordPress, esta funcionalidad debería existir dentro del contexto de otro método.

Esto nos brinda un lugar dedicado para colocar este tipo de funcionalidad, desacoplarla del resto de la clase y hacer que interactúe con WordPress solo cuando el método se invoque explícitamente.

Pero recuerde, el objetivo principal de lo que quiero decir tiene que ver con detener la ejecución de un complemento, no con dónde colocar los ganchos.

Entonces, digamos que la dependencia de terceros no existe, ¿entonces qué? Recuerde en el constructor, se estableció una propiedad que nos permitirá determinar si debemos avanzar con la configuración de ganchos o no:

Y cuando eso esté en su lugar, el resto del código no se ejecutará.

Muchas palabras, un poco de código

Suena como una gran explicación para tan poco código.

Pero una parte de esto también es para tratar de transmitir la importancia de tener partes de un proyecto basado en WordPress separadas del resto del núcleo para que las partes puedan interactuar entre sí sin necesidad explícita de hablar con el núcleo todo el tiempo.

Fuente de grabación: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More