WordPress : fonction de rappel définie dans une classe

Une fonction de rappel (en anglais : callback function), est une fonction dont le nom est passé en paramètre à une autre fonction. C'est l'API qui se chargera d'exécuter cette fonction de rappel au moment opportun.

Les fonctions de rappel sont utilisées dans de nombreux contextes : avec les hooks (add_action() ou add_filter()), avec les shortcodes (add_shortcode()), lors de l'ajout d'options de menu personnalisées (add_menu_page(), add_submenu_page() ou add_options_page()), etc.

Lorsqu'on travaille avec une fonction de rappel, la syntaxe variera selon que cette fonction est une simple fonction (ex : fonction définie directement dans functions.php), une méthode d'une classe ou encore une méthode statique d'une classe.

Cet article vous présente les ajustements que vous devrez apporter à votre code selon la façon dont la fonction de rappel est définie. La syntaxe est illustrée à l'aide d'un hook mais elle sera la même peu importe dans quel contexte la fonction de rappel est utilisée.

▼Publicité

Simple fonction

Lorsqu'un hook est défini dans un thème, la fonction de rappel, codée dans le fichier functions.php du thème, sera une simple fonction. La syntaxe de add_filter() ou de add_action() sera sous sa forme la plus simple.

Ex :

WordPress (PHP)

/**

 * Fonction qui permet de ... .

 *

 * @author Christiane Lagacé

 *

 */

function monprefixe_fonction_de_rappel() {

    ...

}

 

add_action( 'nom_du_hook', 'monprefixe_fonction_de_rappel' );

Méthode d'une classe

Les bonnes pratiques veulent que les extensions soient codées dans une classe. Donc, dans le cas d'un hook défini dans une extension, la fonction de rappel sera plutôt une méthode définie dans la classe de l'extension.

À ce moment, le second paramètre de add_filter() ou add_action() devra être un tableau. Le premier élément du tableau sera $this, soit l'objet sur lequel on travaille, et le second, le nom de la méthode.

WordPress (PHP)

class Monprefixe_Mon_Extension {

 

    /**

     * Constructeur.

     *

     * @return void

     */

    public function __construct() {

        add_action( 'nom_du_hook', array( $this, 'fonction_de_rappel' );

        ...   

    }

 

    /**

     * Fonction qui permet de ... .

     *

     * @return void

     */

    public function fonction_de_rappel() {

        ...

    }

 

}

Notez que l'utilisation d'une esperluette (&esp;) devant le $this, tel qu'on peut voir dans plusieurs extraits de code sur le Web, est un héritage de PHP 4 et ne devrait plus être utilisée.

Méthode statique d'une classe

Si la fonction de rappel est une fonction statique de la classe, on pourra appeler add_filter() ou add_action() à l'extérieur de la classe.

À ce moment, le deuxième paramètre utilisera le nom de la classe plutôt qu'une référence à l'objet actuel.

WordPress (PHP)

class Monprefixe_Mon_Extension {

    ...    

    /**

     * Fonction qui permet de ... .

     *

     * @return void

     */

    public static function fonction_de_rappel() {

        ...

    }

}

 

add_action( 'nom_du_hook', array( 'Monprefixe_Mon_Extension', 'fonction_de_rappel' ) );

Pour plus d'information

« $this vs &$this ». Christiane Lagacé. http://christianelagace.com/php/this-vs-this/

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories