Title: Développer avec les crochets (hooks)
Published: 6 June 2025

---

[Home](https://learn.wordpress.org)[Lessons](https://learn.wordpress.org/lessons/)
Développer avec les crochets (hooks)

[Exit lesson](https://learn.wordpress.org/lessons/)

# Développer avec les crochets (hooks)

Au fur et à mesure que vous plongez dans le développement avec les crochets WordPress,
il y a certains détails importants sur leur manière de fonctionner que vous devriez
connaître.

Dans cette leçon, vous apprendrez quelques bonnes pratiques à suivre quand vous 
développez avec les crochets.

## Nommer les crochets

La première bonne pratique concerne le nommage des crochets. Jetons un œil à certaines
conventions que suit le cœur de WordPress.

### Actions

Les actions sont généralement déclenchées au moment où quelque chose change, il 
est donc conseillé de choisir un verbe d’action en lien avec ce changement.

Par exemple, le crochet qui est déclenché par le cœur de WordPress quand un article
est supprimé est appelé `delete_post`.

    ```php
    do_action( 'delete_post' );
    ```

Si vous voulez ajouter une action avant le changement, vous pouvez utiliser le préfixe`
pre_`.

    ```php
    do_action( 'pre_delete_post' );
    ```

Pour terminer, si vous voulez ajouter une action après l’événement, la convention
est d’utiliser le verbe au passé.

    ```php
    do_action( 'deleted_post' );
    ```

### Filtres

Parce que les filtres sont généralement liés à une variable qui peut être modifiée,
les crochets de filtre sont souvent nommés d’après cette variable.

Par exemple, le filtre qui vous permet de modifier le contenu d’un article est appelé`
the_content`.

    ```php
    $content = apply_filters( 'the_content', get_the_content() );
    ```

### Éviter les collisions de noms

Quand vous nommez vos crochets, il est important d’éviter les collisions de nommage
avec d’autres extensions ou thèmes. Dans ce but, vous pouvez préfixer vos crochets
avec le nom de votre extension ou un identifiant unique.

    ```php
    do_action( 'wp_learn_delete_book' );

    apply_filters( 'wp_learn_lesson_url', 'https://example.org/lesson' );
    ```

## Gestion des types retournés par les filtres

En utilisant un filtre, le type de variable qui est retourné n’est pas garanti, 
même s’il est documenté.

### Le problème

La raison est que c’est la dernière fonction de rappel (callback) qui est utilisée
par le filtre détermine le type de la variable.

À première vue, cela peut ne pas sembler être problématique, car comme vous êtes
développeur, vous ferez en sorte de retourner une valeur du même type que celle 
reçue.

Cependant, si vous vous rappelez de la leçon sur les crochets personnalisés; comme
vous pouvez vous accrocher à des actions et des filtres, d’autres développeurs le
peuvent aussi.

![](https://i0.wp.com/learn.wordpress.org/files/2024/12/Handling-filter-return.png?
resize=1920%2C1080&ssl=1)

Cela veut dire que si vous ajoutez un crochet à votre plugin, vous devez vous assurer
que la valeur retournée est du bon type, sinon cela pourrait casser votre fonctionnalité.

### La solution

La solution à ce problème vient en deux parties:

#### Validez la sortie de votre filtre

Le meilleur moyen d’être sûr que la valeur rendue par les fonctions de retour reste
du même type que celui attendu est de valider le type de données dans votre code.

Pour les types simples comme les entiers, nombre ou booléens, vous pouvez utiliser
le système de [changement de type de PHP](https://www.php.net/manual/fr/language.types.type-juggling.php)
afin d’assurer que la valeur retournée est du bon type

 * `boolean`: `$is_admin = (bool) apply_filters( 'wp_learn_is_admin', true );`
 * `integer`: `$book_count = (int) apply_filters( 'wp_learn_book_count', 10 );`
 * `float`: `$base_price = (float) apply_filters( 'wp_learn_base_price', 10.0 );`

Cependant, pour des validations plus complexes ou pour d’autres types, il est plus
approprié d’implémenter une validation manuelle.

Par exemple, pour une chaîne de caractères ou un tableau, il serait mieux de valider
si la valeur retournée est du bon type plutôt que de forcer son type ce qui pourrait
amener à une erreur fatale.

Par exemple, vous pouvez utiliser la [fonction](https://www.php.net/manual/fr/function.is-string.php)
PHP is_string() pour vérifier que la valeur retournée par l’ensemble des fonctions
est une chaîne de caractères.

    ```php
    $book_slug = apply_filters( 'wp_learn_book_slug', 'books' );

    if ( ! is_string( $book_slug ) ) {
        // either reset the value or throw an error
    }
    ```

Dans le cas contraire, vous pouvez écraser sa valeur ou déclencher une erreur.

#### Vérifiez la valeur de votre fonction de rappel

Le fait que le type de variable retourné par un filtre puisse être modifié veut 
également dire qu’une valeur de type incorrect peut également être passée à une 
fonction de rappel.

![](https://i0.wp.com/learn.wordpress.org/files/2024/12/Assert-callback-values.png?
resize=1920%2C1080&ssl=1)

Par conséquent, si vous accrochez votre fonction de retour à un filtre, il est important
de toujours vérifier le type de la valeur reçue avant d’effectuer des opérations
dessus.

    ```php
    add_filter( 'wp_learn_book_slug', 'jon_doe_edit_book_slug' );
    function jon_doe_edit_book_slug( $book_slug ) {
        if ( ! is_string( $book_slug ) ) {
            // throw some error because the type is incorrect 
        }

        // continue with your functionality because the type is correct
        return 'book';
    }
    ```

Vous pouvez utiliser les mêmes méthodes que précédemment pour valider le type de
la variable que vous recevez.

Pour plus d’information sur le Jonglage de type des variables PHP, vous pouvez vous
référer à la [documentation de PHP](https://www.php.net/manual/fr/language.types.type-juggling.php).

Il y a également une section dédiée aux [fonctions de gestion des variables](https://www.php.net/manual/fr/ref.var.php).

## Obtenir des informations sur un crochet

Une autre chose à savoir sur les crochets, c’est comment obtenir des informations
sur eux.

### Déterminer le crochet courant

WordPress permet à une fonction de rappel ou méthode d’être utilisée par plus d’un
crochet à la fois.

A cause de ça, le crochet auquel la fonction est actuellement rattachée est parfois
incertain.

Dans chaque fonction il est possible d’utiliser les fonctions [`current_filter` (en anglais)](https://developer.wordpress.org/reference/functions/current_filter/)
ou [`current_action` (en anglais)](https://developer.wordpress.org/reference/functions/current_action/)
pour déterminer quel est le filtre ou l’action qui a déclenché l’appel de la fonction.

### Compter le nombre de fois qu’un crochet a été déclenché

Il est parfois important de savoir combien de fois un crochet a été appelé afin 
de prévenir une exécution supplémentaire.

Dans une fonction de retour, vous pouvez utiliser la fonction  [`did_filter` (en anglais)](https://developer.wordpress.org/reference/functions/did_filter/)
pour vérifier combien de fois le filtre a été appelé durant la requête courante 
et la fonction [`did_action `(en anglais)](https://developer.wordpress.org/reference/functions/did_action/)
pour déterminer combien de fois l’action a été appelée.

Traduction : [Timothee Moulin](https://profiles.wordpress.org/timotheemoulin/)

##  Suggestions

 Found a typo, grammar error or outdated screenshot? [Contact us](https://learn.wordpress.org/report-content-feedback/).