Interfacce dei plugin di WordPress: lavorare con le risorse
Uno dei vantaggi di lavorare con la programmazione orientata agli oggetti è la capacità di definire interfacce in modo che le classi che implementano tali interfacce abbiano un insieme rigoroso di funzioni che dette classi devono implementare.
Questa è la definizione di un’interfaccia di classe, comunque:
Un’interfaccia è un contratto che specifica un insieme di metodi, campi e proprietà che saranno disponibili su qualsiasi oggetto di implementazione
Ma come potrebbe apparire se miriamo a creare una soluzione con spazio dei nomi per includere le interfacce dei plugin di WordPress (o un’interfaccia) per una classe che può essere utilizzata per accodare fogli di stile o file JavaScript?
Interfacce plugin di WordPress: risorse
Ai fini di questo post, supponiamo che stiamo definendo un’interfaccia che verrà utilizzata nell’area di amministrazione di WordPress. Cioè, creeremo un’interfaccia che verrà utilizzata per accodare fogli di stile e file JavaScript.
Dovremo incorporare quanto segue:
- uno spazio dei nomi che può essere utilizzato durante tutto il progetto,
- una funzione per inizializzare la classe,
- una funzione per accodare effettivamente gli asset.
E poiché questo è abbastanza generico da poter essere utilizzato per JavaScript e fogli di stile, ho scelto di chiamarlo semplicemente Asset.
Il risultato finale potrebbe assomigliare a questo :
<?php
namespace AcmeAdminInterfaces;
interface Asset {
public function init();
public function enqueue();
}
Successivamente, dobbiamo implementare effettivamente l’interfaccia con una classe. Dovrebbe essere relativamente semplice poiché abbiamo impostato i metodi che devono essere implementati.
Si noti, tuttavia, che fornisco un paio di proprietà impostate nel costruttore della classe. Questi sono specifici di questa classe e rendono un po’ più semplice l’atto di accodare un file.
<?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
);
}
}
Alcune cose da notare sul codice sopra:
- utilizza la parola chiave use in modo che PHP sappia che lavoreremo con l’ interfaccia Asset ,
- Ho preceduto il nome con JavaScript, quindi è chiaro con quale tipo di risorsa sto lavorando.
Infine, per istanziare la classe che implementa l’interfaccia, fai semplicemente questo :
<?php
$assets = new AdminJavaScript_Assets();
$assets->init();
Certo, questo particolare esempio è semplice e ho lasciato fuori i soliti commenti sul codice, ma in genere è per motivi di leggibilità. Se vuoi vedere qualcosa di simile in azione, controlla il codice sorgente per
Se vuoi vedere qualcosa di simile in azione, controlla il codice sorgente per questo particolare plugin.