✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Interfejsy wtyczek WordPress: praca z zasobami

11

Jedną z zalet pracy z programowaniem obiektowym jest możliwość definiowania interfejsów tak, aby klasy implementujące te interfejsy miały ścisły zestaw funkcji, które te klasy muszą implementować.

W każdym razie jest to definicja interfejsu klasowego:

Interfejs to kontrakt określający zestaw metod, pól i właściwości, które będą dostępne na dowolnym obiekcie implementującym

Ale jak to może wyglądać, jeśli naszym celem jest stworzenie rozwiązania z przestrzenią nazw do dołączania interfejsów wtyczek WordPress (lub interfejsu) dla klasy, która może być używana do kolejkowania arkuszy stylów lub plików JavaScript?

Interfejsy wtyczek WordPress: zasoby

Na potrzeby tego posta załóżmy, że definiujemy interfejs, który będzie używany w obszarze administracyjnym WordPressa. Oznacza to, że stworzymy interfejs, który będzie używany do kolejkowania arkuszy stylów i plików JavaScript.

Musimy uwzględnić następujące elementy:

  • przestrzeń nazw, którą można wykorzystać w całym projekcie,
  • funkcja do inicjalizacji klasy,
  • funkcja do faktycznego kolejkowania aktywów.

A ponieważ jest to na tyle ogólne, że może być używane w JavaScript i arkuszach stylów, zdecydowałem się po prostu nazwać go Asset.

Wynik końcowy może wyglądać mniej więcej tak :

<?php

namespace AcmeAdminInterfaces;

interface Asset {

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

Następnie musimy faktycznie zaimplementować interfejs z klasą. Powinno to być stosunkowo proste, ponieważ ustaliliśmy metody, które muszą zostać zaimplementowane.

Zauważ jednak, że udostępniam kilka właściwości, które są ustawiane w konstruktorze klasy. Są one specyficzne dla tej klasy i sprawiają, że czynność faktycznego zakolejkowania pliku jest nieco łatwiejsza.

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

Kilka rzeczy do zapamiętania na temat powyższego kodu:

  • używa  słowa kluczowego use, aby PHP wiedziało, że będziemy pracować z interfejsem Asset ,
  • Poprzedziłem nazwę JavaScriptem, aby było jasne, z jakim typem zasobu pracuję.

Na koniec, aby utworzyć instancję klasy, która implementuje interfejs, po prostu zrób to :

<?php

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

Jasne, ten konkretny przykład jest prosty i pominąłem zwykłe komentarze do kodu, ale generalnie chodzi o czytelność. Jeśli chcesz zobaczyć coś takiego w akcji, przejrzyj kod źródłowy dla

Jeśli chcesz zobaczyć coś takiego w działaniu, przejrzyj kod źródłowy tej konkretnej wtyczki.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów