Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Interfaces de plugins WordPress : Travailler avec des ressources

27

L’un des avantages de travailler avec la programmation orientée objet est la possibilité de définir des interfaces afin que les classes qui implémentent ces interfaces aient un ensemble strict de fonctions que lesdites classes doivent implémenter.

C’est la définition d’une interface de classe, de toute façon :

Une interface est un contrat spécifiant un ensemble de méthodes, de champs et de propriétés qui seront disponibles sur tout objet d’implémentation

Mais à quoi cela pourrait-il ressembler si nous visons à créer une solution d’espace de noms pour inclure des interfaces de plug-in WordPress (ou une interface) pour une classe pouvant être utilisée pour mettre en file d’attente des feuilles de style ou des fichiers JavaScript ?

Interfaces de plugins WordPress : atouts

Pour les besoins de cet article, supposons que nous définissions une interface qui sera utilisée dans la zone d’administration de WordPress. Autrement dit, nous allons créer une interface qui sera utilisée pour mettre en file d’attente les feuilles de style et les fichiers JavaScript.

Nous devrons intégrer les éléments suivants :

  • un espace de noms utilisable tout au long du projet,
  • une fonction d’initialisation de la classe,
  • une fonction pour réellement mettre en file d’attente les actifs.

Et comme c’est suffisamment générique pour pouvoir être utilisé pour JavaScript et les feuilles de style, j’ai choisi de l’appeler simplement Asset.

Le résultat final peut ressembler à ceci :

<?php

namespace AcmeAdminInterfaces;

interface Asset {

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

Ensuite, nous devons réellement implémenter l’interface avec une classe. Cela devrait être relativement simple puisque nous avons défini les méthodes qui doivent être implémentées.

Notez, cependant, que je fournis quelques propriétés qui sont définies dans le constructeur de la classe. Celles-ci sont spécifiques à cette classe et facilitent un peu la mise en file d’attente d’un fichier.

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

Quelques points à noter à propos du code ci-dessus :

  • il utilise le  mot-clé use pour que PHP sache que nous allons travailler avec l’ interface Asset ,
  • J’ai préfixé le nom avec JavaScript afin qu’il soit clair avec quel type d’actif je travaille.

Enfin, pour instancier la classe qui implémente l’interface, il suffit de faire ceci :

<?php

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

Bien sûr, cet exemple particulier est simple et j’ai laissé de côté les commentaires de code habituels, mais c’est généralement pour des raisons de lisibilité. Si vous voulez voir quelque chose comme ça en action, passez en revue le code source pour

Si vous voulez voir quelque chose comme ça en action, passez en revue le code source de ce plugin particulier.

Source d’enregistrement: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More