Site icon Régis Enguehard

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.

<?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.

Quitter la version mobile