✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Интерфейсы плагинов WordPress: работа с активами

24

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

Во всяком случае, это определение интерфейса класса:

Интерфейс — это контракт, определяющий набор методов, полей и свойств, которые будут доступны для любого реализующего объекта.

Но как это может выглядеть, если мы стремимся создать решение с пространством имен для включения интерфейсов плагинов 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 для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее