Last active
May 1, 2025 18:23
-
-
Save spyesx/561b1d65d4afb595f295 to your computer and use it in GitHub Desktop.
String to slug in JS (wordpress sanitize_title)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var string_to_slug = function (str) | |
{ | |
str = str.replace(/^\s+|\s+$/g, ''); // trim | |
str = str.toLowerCase(); | |
// remove accents, swap ñ for n, etc | |
var from = "àáäâèéëêìíïîòóöôùúüûñçěščřžýúůďťň·/_,:;"; | |
var to = "aaaaeeeeiiiioooouuuuncescrzyuudtn------"; | |
for (var i=0, l=from.length ; i<l ; i++) | |
{ | |
str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i)); | |
} | |
str = str.replace('.', '-') // replace a dot by a dash | |
.replace(/[^a-z0-9 -]/g, '') // remove invalid chars | |
.replace(/\s+/g, '-') // collapse whitespace and replace by a dash | |
.replace(/-+/g, '-') // collapse dashes | |
.replace( /\//g, '' ); // collapse all forward-slashes | |
return str; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You can also do
wp.url.cleanForSlug('Test Title')
. Works in the frontend too. I used it to generate a table of contents section in the sidebar.