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
.