Interfaces de complementos de WordPress: trabajar con activos
Una de las ventajas de trabajar con programación orientada a objetos es la capacidad de definir interfaces para que las clases que implementan esas interfaces tengan un conjunto estricto de funciones que dichas clases deben implementar.
Esa es la definición de una interfaz de clase, de todos modos:
Una interfaz es un contrato que especifica un conjunto de métodos, campos y propiedades que estarán disponibles en cualquier objeto de implementación.
Pero, ¿cómo se vería esto si nuestro objetivo es crear una solución de espacio de nombres para incluir interfaces de complementos de WordPress (o una interfaz) para una clase que se puede usar para poner en cola hojas de estilo o archivos JavaScript?
Interfaces de complementos de WordPress: activos
A los efectos de esta publicación, suponga que estamos definiendo una interfaz que se utilizará en el área de administración de WordPress. Es decir, crearemos una interfaz que se usará para poner en cola hojas de estilo y archivos JavaScript.
Tendremos que incorporar lo siguiente:
- un espacio de nombres que se puede utilizar en todo el proyecto,
- una función para inicializar la clase,
- una función para poner en cola los activos.
Y dado que esto es lo suficientemente genérico como para que se pueda usar para JavaScript y hojas de estilo, opté por llamarlo simplemente Asset.
El resultado final puede ser algo como esto :
<?php
namespace AcmeAdminInterfaces;
interface Asset {
public function init();
public function enqueue();
}
A continuación, necesitamos implementar la interfaz con una clase. Debería ser relativamente sencillo ya que hemos establecido los métodos que deben implementarse.
Tenga en cuenta, sin embargo, que proporciono un par de propiedades que se establecen en el constructor de la clase. Estos son específicos de esta clase y hacen que el acto de poner en cola un archivo sea un poco más fácil.
<?php
namespace AcmeAdmin;
use AcmeAdminInterfaces;
class JavaScript_Assets implements InterfacesAsset {
private $assets_dir;
private $js_dir;
public function __construct() {
$this->assets_dir = trailingslashit(
plugin_dir_url( __FILE__ ). 'assets'
);
$this->js_dir = trailingslashit( $this->assets_dir. 'js' );
}
public function init() {
add_action(
'admin_enqueue_scripts',
array( $this, 'enqueue') );
}
public function enqueue() {
wp_enqueue_script(
'toggle-admin-notices',
$this->js_dir. 'admin.js',
array( 'jquery' ),
false
);
}
}
Algunas cosas a tener en cuenta sobre el código anterior:
- utiliza la palabra clave use para que PHP sepa que trabajaremos con la interfaz de activos ,
- Le prefijé el nombre con JavaScript para que quede claro con qué tipo de activo estoy trabajando.
Finalmente, para instanciar la clase que implementa la interfaz, simplemente haga esto :
<?php
$assets = new AdminJavaScript_Assets();
$assets->init();
Claro, este ejemplo en particular es simple y he dejado los comentarios habituales del código, pero eso es generalmente por el bien de la legibilidad. Si desea ver algo como esto en acción, revise el código fuente para
Si desea ver algo como esto en acción, revise el código fuente de este complemento en particular.