web-dev-qa-db-fra.com

Est-il acceptable de traiter un filtre comme une action?

Le filtre wp_insert_attachment_data est disponible dans wp_insert_attachment(). Il permet de filtrer les données de publication en pièce jointe avant leur mise à jour ou leur ajout à la base de données.

$data = apply_filters( 'wp_insert_attachment_data', $data, $object ); 

Je n'ai pas besoin de modifier les données de publication, mais je dois effectuer une action à ce moment précis de l'exécution. Est-il acceptable d’accrocher ma fonction au filtre, d’effectuer certains traitements et de renvoyer $ data inaltérée? En fait, j'ai besoin d'utiliser $ data, mais je n'ai pas besoin de le changer. Par exemple:

function my_function( $data, $object ) {

    // Do some stuff with $data here.

    // No changes made to $data. Just return it.
    return $data;
}
add_filter( 'wp_insert_attachment_data', 'my_function', 10, 2 );

Bien que je pense que cette solution fonctionnera pour mon objectif, j’estime que c’est un peu "bidouilliste" et qu’il va à l’encontre du but du filtre wp_insert_attachment_data. Le but d'un filtre est de modifier une variable. Dans mon cas, je ne modifie rien.

Est-ce acceptable ou dois-je demander sur WordPress Trac l'ajout d'un crochet d'action?

1
henrywright

Toutes les actions sont en fait des filtres internes.

Alors oui, vous pouvez faire les choses dans un crochet de filtre. Cependant, gardez à l'esprit quels filtres et ce que vous faites. Certains filtres sont utilisés partout et des opérations coûteuses peuvent entraîner des ralentissements massifs. Aussi méfiez-vous de la récursivité. Si votre opération coûteuse déclenche le filtre auquel vous êtes accroché ..

1
Tom J Nowell