Créer une extension personnalisée pour WOLF (guide du développeur)
WOLF permet de créer des extensions personnalisées, à placer dans le dossier : wp-content/wpbe_ext
Voici quelques extensions natives existantes, à titre d'exemple :
Les fonctionnalités d'une extension peuvent être présentées dans des onglets (onglets supérieurs et onglets de base) ou sans aucun onglet, comme l'extension 'calculator' par exemple.
Prenons l'extension la plus simple, Info :
- Son dossier s'appelle 'info'
- Le dossier 'info' doit contenir : info.php, views/panel.php, js/info.js, css/info.css et, si nécessaire, un dossier img
- info.php contient une classe PHP WPBE_INFO qui étend la classe WPBE_EXT
- dans la classe WPBE_INFO, il faut définir une variable protégée $slug ayant pour valeur 'info'
- dans le constructeur de la classe WPBE_INFO , il faut définir le code suivant pour créer les onglets :
$this->add_tab($this->slug, 'panel', __('Help', 'bulk-editor')); add_action('wpbe_ext_panel_' . $this->slug, array($this, 'wpbe_ext_panel'), 1);Pour créer des onglets dans le curseur supérieur (où se trouvent filter, bulk, export), le code doit être :
$this->add_tab($this->slug, 'top_panel', __('Help', 'bulk-editor')); add_action('wpbe_ext_top_panel_' . $this->slug, array($this, 'wpbe_ext_panel'), 1);Observez le code de plus près pour voir la différence : panel -> top_panel ; wpbe_ext_panel_ -> wpbe_ext_top_panel_
- Si notre extension a besoin de js et de css, écrivez la fonction wpbe_ext_scripts :
public function wpbe_ext_scripts() { wp_enqueue_script('wpbe_ext_' . $this->slug, $this->get_ext_link() . 'assets/js/' . $this->slug . '.js'); wp_enqueue_style('wpbe_ext_' . $this->slug, $this->get_ext_link() . 'assets/css/' . $this->slug . '.css'); ?> <script> lang.<?php echo $this->slug ?> = {}; lang.<?php echo $this->slug ?>.example= "<?php _e('Text example', 'bulk-editor') ?>"; </script> <?php }Ce code charge les styles de notre extension ainsi que les futures actions js
- La fonction wpbe_ext_panel affichera tous les formulaires dont nous avons besoin dans notre application. Elle affichera bien sûr le code HTML que vous écrirez dans le fichier views/panel.php, par exemple des popups
- Nous avons donc maintenant l'application la plus simple qu'il soit possible de créer. Pour écrire votre propre logique, consultez le code des extensions que vous pouvez télécharger sur cette page à titre d'exemple, ou celui des extensions natives de WPBE dans le dossier wp-content\plugins\bulk-editor\ext
- ATTENTION : pour les extensions externes, il faut définir une variable protégée $is ayant pour valeur 'external'

Quelques actions :
- wpbe_adv_panel_buttons_end - ajoute du code html à la fin du panneau d'outils dans les onglets de l'Éditeur d'articles (Posts Editor), voir l'exemple dans l'extension 'bulk'
- wpbe_adv_panel_buttons - ajoute du code html au début du panneau d'outils dans les onglets de l'Éditeur d'articles, voir l'exemple dans l'extension 'bulk'
- wpbe_page_end - ce hook permet d'afficher tous les éléments html supplémentaires dont votre application a besoin, voir l'exemple de l'extension calculator
- wpbe_before_update_page_field - hook exécutable avant la mise à jour d'un champ d'article : models/posts.php
- wpbe_after_update_page_field - hook exécutable après la mise à jour d'un champ d'article : models/posts.php
add_action('wpbe_after_update_page_field', function($post_id, $post, $field_key, $value, $field_type) { //do smth here }); - wpbe_bulk_started - hook déclenché avant le début de l'édition en masse : \ext\bulk\bulk.php
- wpbe_bulk_going - hook déclenché pendant l'édition en masse : \ext\bulk\bulk.php
- wpbe_bulk_finished - hook déclenché après la fin de l'édition en masse : \ext\bulk\bulk.php
Quelques variables :
- wpbe_checked_posts - (js) identifiants des articles sélectionnés dans l'Éditeur d'articles
- wpbe_bind_editing - (js) indique si l'édition liée est activée
- wpbe_show_variations - (js) indique si les variations sont affichées
- wpbe_adv_panel_full_width - (js) indique si la pleine largeur est activée
- global $WPBE - (php) variable globale principale du plugin que vous pouvez utiliser



