✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

WordPress Plugin-gränssnitt: Arbeta med tillgångar

22

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.

Inspelningskälla: tommcfarlin.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer