The pre_insert_term filter allows you to modify a term before it is sanitized and inserted into the WordPress database.
Usage
add_filter('pre_insert_term', 'your_custom_function', 10, 3); function your_custom_function($term, $taxonomy, $args) { // your custom code here return $term; }
Parameters
$term
(string|WP_Error): The term name to add, or a WP_Error object if there’s an error.$taxonomy
(string): Taxonomy slug.$args
(array|string): Array or query string of arguments passed to wp_insert_term().
More information
See WordPress Developer Resources: https://developer.wordpress.org/reference/hooks/pre_insert_term/
Examples
Uppercase all terms before insertion
This example changes all terms to uppercase before insertion.
add_filter('pre_insert_term', 'uppercase_term', 10, 3); function uppercase_term($term, $taxonomy, $args) { $term = strtoupper($term); return $term; }
Append a custom string to term names
This example appends a custom string ‘-CUSTOM’ to term names before insertion.
add_filter('pre_insert_term', 'append_custom_string', 10, 3); function append_custom_string($term, $taxonomy, $args) { $term .= '-CUSTOM'; return $term; }
Prevent insertion of terms with certain keywords
This example prevents terms containing the keyword ‘forbidden’ from being inserted.
add_filter('pre_insert_term', 'prevent_forbidden_terms', 10, 3); function prevent_forbidden_terms($term, $taxonomy, $args) { if (strpos(strtolower($term), 'forbidden') !== false) { return new WP_Error('term_not_allowed', 'The term contains a forbidden keyword.'); } return $term; }
Limit term length
This example limits term length to a maximum of 20 characters.
add_filter('pre_insert_term', 'limit_term_length', 10, 3); function limit_term_length($term, $taxonomy, $args) { if (strlen($term) > 20) { $term = substr($term, 0, 20); } return $term; }
Replace specific words before insertion
This example replaces the word ‘apple’ with ‘orange’ before term insertion.
add_filter('pre_insert_term', 'replace_specific_word', 10, 3); function replace_specific_word($term, $taxonomy, $args) { $term = str_replace('apple', 'orange', $term); return $term; }