Basically, when you add a new term, WordPress will use term_exists()
to validate term before add it to database.
-
term_exists()
usessanitize_title()
which usesremove_accents()
andsanitize_title_with_dashes()
to sanitize term. -
remove_accents()
will converts all accent characters to ASCII characters andsanitize_title_with_dashes()
will limits the output to alphanumeric characters, underscore (_) and dash (-), whitespaces will be converted to dashes, uppercase characters will be converted to lowercase characters. -
WordPress also doesn’t allow to create terms which have the same term slug at the same level of a taxonomy hierarchy.
So, every characters which don’t output the same term slug at the same level of a taxonomy hierarchy after passed through sanitize_title()
function are allowed characters.