✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Інтерфейси плагінів WordPress: робота з активами

17

Однією з переваг роботи з об’єктно-орієнтованим програмуванням є можливість визначати інтерфейси, щоб класи, які реалізують ці інтерфейси, мали строгий набір функцій, які зазначені класи повинні реалізувати.

У всякому разі, це визначення інтерфейсу класу:

Інтерфейс — це контракт, що визначає набір методів, полів і властивостей, які будуть доступні для будь-якого реалізованого об’єкта

Але як це може виглядати, якщо ми прагнемо створити рішення з простором імен для включення інтерфейсів плагінів WordPress (або інтерфейсу) для класу, який можна використовувати для постановки в чергу таблиць стилів або файлів JavaScript?

Інтерфейси плагінів WordPress: ресурси

Для цілей цієї публікації припустимо, що ми визначаємо інтерфейс, який використовуватиметься в області адміністрування WordPress. Тобто ми створимо інтерфейс, який використовуватиметься для постановки таблиць стилів і файлів JavaScript у чергу.

Нам потрібно включити наступне:

  • простір імен, який можна використовувати в усьому проекті,
  • функція для ініціалізації класу,
  • функція для фактичного постановки активів у чергу.

І оскільки це достатньо загальне, щоб його можна було використовувати для JavaScript і таблиць стилів, я вирішив просто назвати його Asset.

Кінцевий результат може виглядати приблизно так :

<?php

namespace AcmeAdminInterfaces;

interface Asset {

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

Далі нам потрібно фактично реалізувати інтерфейс за допомогою класу. Це має бути відносно простим, оскільки ми встановили методи, які повинні бути реалізовані.

Однак зауважте, що я надаю кілька властивостей, які встановлюються в конструкторі класу. Вони є специфічними для цього класу та спрощують фактичне розміщення файлу в черзі.

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

Кілька речей, які слід зазначити про код вище:

  • він використовує ключове слово use, щоб PHP знав, що ми працюватимемо з інтерфейсом Asset ,
  • Я додав перед назвою JavaScript, щоб було зрозуміло, з яким типом ресурсу я працюю.

Нарешті, щоб створити екземпляр класу, який реалізує інтерфейс, ви просто зробите це :

<?php

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

Звичайно, цей конкретний приклад простий, і я залишив звичайні коментарі до коду, але це загалом для зручності читання. Якщо ви хочете побачити щось подібне в дії, перегляньте вихідний код для

Якщо ви хочете побачити щось подібне в дії, перегляньте вихідний код цього конкретного плагіна.

Джерело запису: tommcfarlin.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі