Fermer

Créer une extension WordPress

Pourquoi créer une extension WordPress ?

Les extensions WordPress sont des plugins qui permettent d’ajouter des fonctionnalités supplémentaires à un site web WordPress. Plusieurs raisons pour créer une extension WordPress, par exemple : ajout de fonctionnalité, développement de fonctionnalités spécifiques, regrouper des fonctionnalités, optimiser des performances, Sécurité, expérience utilisateur.

  • Créez un dossier pour votre extension : ce dossier doit être placé dans le dossier /wp-content/plugins/. Le nom de ce dossier doit être unique et en minuscules, sans espaces ni caractères spéciaux. Par exemple, reg-extension.
  • Créez un fichier principal de l’extension : idéalement ce fichier est nommé de la même manière que le dossier de l’extension, suivi de l’extension .php. Par exemple, reg-extension.php.
  • Ajoutez les informations de l’extension : dans reg-extension.php, on inclus ces informations en utilisant le format de commentaire de l’en-tête de WordPress. Voici un exemple :
<?php
/*
Plugin Name: Nom de l'extension
Plugin URI: <http://www.example.com>
Description: Description de votre extension
Version: 1.0
Author: Votre nom
Author URI: <http://www.enguehard.info>
License: GPLv2 ou ultérieure
License URI: <http://www.gnu.org/licenses/gpl-2.0.html>
Text Domain: reg-extension
*/

Protéger son extension

defined('ABSPATH') or die('Nothing');

Détecter l’activation d’un plugin

register_activation_hook(__FILE__, function() {
    var_dump('activation');
});

Détecter la désactivation d’un plugin

register_deactivation_hook(__FILE__, function() {
    var_dump('Désactivation');
});

Support SVG

Notre extension va maintenant ajouter le support des SVG à notre WordPress.

/**
 * Allow SVG uploads.
 *
 * @param array $upload_mimes Allowed mime types.
 *
 * @return mixed
 */
add_filter(
    'upload_mimes',
    function ( $upload_mimes ) {
        $upload_mimes['svg']  = 'image/svg+xml';
        $upload_mimes['svgz'] = 'image/svg+xml';
        return $upload_mimes;
    }
);

/**
 * Add SVG files mime type check.
 *
 * @param array        $wp_check_filetype_and_ext Values for the extension, mime type, and corrected filename.
 * @param string       $file Full path to the file.
 * @param string       $filename The name of the file (may differ from $file due to $file being in a tmp directory).
 * @param string[]     $mimes Array of mime types keyed by their file extension regex.
 * @param string|false $real_mime The actual mime type or false if the type cannot be determined.
 */
add_filter(
    'wp_check_filetype_and_ext',
    function ( $wp_check_filetype_and_ext, $file, $filename, $mimes, $real_mime ) {
        if ( ! $wp_check_filetype_and_ext['type'] ) {
            $check_filetype  = wp_check_filetype( $filename, $mimes );
            $ext             = $check_filetype['ext'];
            $type            = $check_filetype['type'];
            $proper_filename = $filename;
            if ( $type && 0 === strpos( $type, 'image/' ) && 'svg' !== $ext ) {
                $ext  = false;
                $type = false;
            }
            $wp_check_filetype_and_ext = compact( 'ext', 'type', 'proper_filename' );
        }
        return $wp_check_filetype_and_ext;
    },
    10,
    5
);

Activation

Il ne nous restera plus qu’à activer notre extension WordPress via le menu Extensions.

Laisser une réponse

Votre adresse email ne sera pas publiée. Les champs obligatoires sont indiqués par *