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
.