✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

WordPress-Plugin-Schnittstellen: Arbeiten mit Assets

28

Einer der Vorteile der Arbeit mit objektorientierter Programmierung ist die Möglichkeit, Schnittstellen zu definieren, sodass Klassen, die diese Schnittstellen implementieren, einen strengen Satz von Funktionen haben, die diese Klassen implementieren müssen.

Das ist jedenfalls die Definition einer Klassenschnittstelle:

Eine Schnittstelle ist ein Vertrag, der eine Reihe von Methoden, Feldern und Eigenschaften angibt, die für jedes implementierende Objekt verfügbar sind

Aber wie könnte das aussehen, wenn wir darauf abzielen, eine Namespace-Lösung zum Einbinden von WordPress-Plugin-Schnittstellen (oder einer Schnittstelle) für eine Klasse zu erstellen, die zum Einreihen von Stylesheets oder JavaScript-Dateien verwendet werden kann?

WordPress-Plugin-Schnittstellen: Assets

Gehen Sie für die Zwecke dieses Beitrags davon aus, dass wir eine Schnittstelle definieren, die im Verwaltungsbereich von WordPress verwendet wird. Das heißt, wir werden eine Schnittstelle erstellen, die verwendet wird, um Stylesheets und JavaScript-Dateien einzureihen.

Wir müssen Folgendes einbauen:

  • einen Namensraum, der im gesamten Projekt verwendet werden kann,
  • eine Funktion zum Initialisieren der Klasse,
  • eine Funktion zum tatsächlichen Einreihen der Assets.

Und da dies so generisch ist, dass es für JavaScript und Stylesheets verwendet werden kann, habe ich mich dafür entschieden, es einfach Asset zu nennen .

Das Endergebnis kann in etwa so aussehen :

<?php

namespace AcmeAdminInterfaces;

interface Asset {

    public function init();
    public function enqueue();
}

Als nächstes müssen wir die Schnittstelle tatsächlich mit einer Klasse implementieren. Es sollte relativ einfach sein, da wir die Methoden festgelegt haben, die implementiert werden müssen.

Beachten Sie jedoch, dass ich einige Eigenschaften bereitstelle, die im Konstruktor der Klasse festgelegt werden. Diese sind spezifisch für diese Klasse und machen das eigentliche Einreihen einer Datei etwas einfacher.

<?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
        );
    }
}

Ein paar Dinge, die zum obigen Code zu beachten sind:

  • es verwendet das  Schlüsselwort use, damit PHP weiß, dass wir mit der Asset -Schnittstelle arbeiten werden,
  • Ich habe dem Namen JavaScript vorangestellt, damit klar ist, mit welcher Art von Asset ich arbeite.

Um schließlich die Klasse zu instanziieren, die die Schnittstelle implementiert, tun Sie einfach Folgendes :

<?php

$assets = new AdminJavaScript_Assets();
$assets->init();

Sicher, dieses spezielle Beispiel ist einfach und ich habe die üblichen Codekommentare weggelassen, aber das dient im Allgemeinen der Lesbarkeit. Wenn Sie so etwas in Aktion sehen möchten, sehen Sie sich den Quellcode an

Wenn Sie so etwas in Aktion sehen möchten, sehen Sie sich den Quellcode für dieses spezielle Plugin an .

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen