web-dev-qa-db-fra.com

Enregistrer le filtre pour les taxonomies

Je souhaite supprimer le code HTML indésirable, principalement publié par mes éditeurs lors de la copie de texte à partir d'autres sources, telles que d'autres pages ou de Word.

Donc j'utilise

add_filter( 'content_save_pre' , 'my_function', 10, 1 );

pour le contenu dans les messages.

Je souhaite faire de même pour les taxonomies/termes et leur description, mais je n'ai trouvé aucun filtre dans la documentation WordPress, et je n'ai rien trouvé dans le code.

2
Christoph Daum

Il y a par exemple les filtres dynamiques suivants sanitize_term_fields() :

  • Filtre edit_term_{$field} pour le contexteedit
  • Filtre pre_term_{$field} pour le contextedb
  • Filtre term_{$field}_rss pour le contexterss
  • term_{$field} filtre (par défaut)

et aussi ceux spécifiques à la taxonomie:

  • Filtre edit_{$taxonomy}_{$field} pour le contexteedit
  • Filtre pre_{$taxonomy}_{$field} pour le contextedb
  • Filtre {$taxonomy}_{$field}_rss pour le contexterss
  • {$taxonomy}_{$field} filtre (par défaut)

Si le contexte estraw, aucun des filtres ci-dessus n'est appliqué.

Le contextedbest utilisé dans les fonctions wp_insert_term() et wp_update_term():

$args = sanitize_term($args, $taxonomy, 'db');

Il existe également le filtre pre_insert_term dans wp_insert_term().

/**
 * Filters a term before it is sanitized and inserted into the database.
 *
 * @since 3.0.0
 *
 * @param string $term     The term to add or update.
 * @param string $taxonomy Taxonomy slug.
 */
 $term = apply_filters( 'pre_insert_term', $term, $taxonomy );

Voici des exemples simples de démonstration pourdescription du termedans le cas depost tagstaxonomie:

editcontext:

add_filter( 'edit_post_tag_description', 'wp_strip_all_tags' );

dbcontexte:

add_filter( 'pre_post_tag_description', 'wp_strip_all_tags' );

Vous voudrez peut-être tester et limiter cela davantage à vos besoins.

Remarque: Il serait peut-être préférable de le décaper à l'endroit où vous écrivez la description du terme sur le front-end, afin de ne pas déranger la saisie de l'utilisateur dans le backend?

4
birgire