WordPress Plugin-gränssnitt: Arbeta med tillgångar
En av fördelarna med att arbeta med objektorienterad programmering är möjligheten att definiera gränssnitt så att klasser som implementerar dessa gränssnitt har en strikt uppsättning funktioner som dessa klasser måste implementera.
Det är definitionen av ett klassgränssnitt, i alla fall:
Ett gränssnitt är ett kontrakt som specificerar en uppsättning metoder, fält och egenskaper som kommer att vara tillgängliga på alla implementeringsobjekt
Men hur kan det här se ut om vi siktar på att skapa en namnavgränsad lösning för att inkludera WordPress-plugin-gränssnitt (eller ett gränssnitt) för en klass som kan användas för att ställa stilmallar eller JavaScript-filer i kö?
WordPress Plugin-gränssnitt: Tillgångar
För detta inläggs syften, anta att vi definierar ett gränssnitt som kommer att användas i administrationsområdet för WordPress. Det vill säga, vi kommer att skapa ett gränssnitt som kommer att användas för att ställa stilmallar och JavaScript-filer i kö.
Vi måste införliva följande:
- ett namnutrymme som kan användas under hela projektet,
- en funktion för att initiera klassen,
- en funktion för att faktiskt köa tillgångarna.
Och eftersom detta är tillräckligt generiskt för att det kan användas för JavaScript och stilmallar, har jag valt att helt enkelt kalla det Asset.
Slutresultatet kan se ut ungefär så här :
<?php
namespace AcmeAdminInterfaces;
interface Asset {
public function init();
public function enqueue();
}
Därefter måste vi faktiskt implementera gränssnittet med en klass. Det borde vara relativt enkelt eftersom vi har satt de metoder som måste implementeras.
Observera dock att jag tillhandahåller ett par egenskaper som är inställda i klassens konstruktor. Dessa är specifika för den här klassen och gör handlingen att faktiskt ställa en fil i kö lite lättare.
<?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
);
}
}
Några saker att notera om koden ovan:
- den använder nyckelordet use så att PHP vet att vi kommer att arbeta med Asset -gränssnittet,
- Jag har prefixet namnet med JavaScript så det är tydligt vilken typ av tillgång jag arbetar med.
Slutligen, för att instansiera klassen som implementerar gränssnittet, gör du helt enkelt så här :
<?php
$assets = new AdminJavaScript_Assets();
$assets->init();
Visst, det här exemplet är enkelt och jag har lämnat de vanliga kodkommentarerna ute men det är generellt sett för läsbarhetens skull. Om du vill se något liknande i aktion, granska källkoden för
Om du vill se något liknande i aktion, granska källkoden för just detta plugin.