No, forward slashes are not allowed to be used in slugs. However, they are automatically stripped out when trying to include slashes in a slug on the post editing screen. Slugs are sanitized by using
Unfortunately, there is no easy way to explain what is and isn't allowed in a slug, let alone to give a simple set of rules to which valid slugs must adhere. However, we can summarise the most important characteristics of a slug quite compactly: a slug consists of solely lowercase alphanumeric characters, dashes and underscores, without 2 or more dashes in a row (sequences of underscores are allowed). Furthermore, a slug cannot start or end with a hyphen.
$title: Title to be sanitized
$fallback_title (optional, defaults to empty string): Slug to use if the sanitized
$title turns out empty
$content (optional, defaults to 'save'): The operation for which the string is sanitized
sanitize_title behaves in the following way (by default, with default
$context arguments, with no external filters applied):
- Accented characters such as "é" and "Ö" are replaced by their corresponding "unaccented" characters (in this example, "e" and "O", respectively)
sanitize_title_with_dashes() is called on the resulting string
The longer (and more complete) explanation can be found below.
sanitize_title_with_dashes() has two more arguments, the first of which isn't used, and second of which is the content,
$context, which is passed from
sanitize_title (and is thus 'save').
sanitize_title_with_dashes() does a lot of things, so I'll try to explain what sequence of steps it performs to sanitize a string.
- All HTML tags are stripped
- Percentage signs are removed, except for the ones in octets (such as
%20 for space)
- The string is converted to lowercase
- All HTML entities, such as
& are stripped
- All dots (
.) are replaced by hyphens (
- Both en dashes and em dashes (WikiPedia on dashes), as well as spaces, are converted to hyphens
- Some special characters, such as accents (e.g. the grave accent) are stripped
- The "times" character (
×) is replaced by "x"
- All characters except for alphanumerical characters, spaces, hyphens and underscores are stripped
- Sequences of hyphens (2 or more hyphens in a row) are replaced by a single hyphen
- Leading and trailing hyphens are stripped
And there you have it, the full title-sanitization process!