Posted Post
Posted People, Posted Life.Archive for apply_filters
Ultimate WP Post Name URL Sanitize Solution
June 23, 2008 at 2:16 am · Filed under WordPress and tagged: all, apply_filters, common words, do_action, english, filter, filters, function, me, name, other, post, post name, post title, post_name, post_title, preg, replace, sanitize title, sanitize title function, seo, substr, tags, title, url, WordPress, work
Few days ago, I was not satisfied with the ugly URL of some post, so I hacked “sanitize_title” function. After I said that time, I also not satisfied with super-long URL and want short them. After short WP category permalink structure today, I put more hacked code in sanitize_title function for short URL. Anyhow, shit happens and I noticed sanitize_title function also used almost everywhere, special when normal visitor visit and process the URL. I don’t want to explain how this mess up, just forget it.
So, I need new method of short and nice URL for article post. I need find a place for “apply_filters” or “do_action“, after quite long time track from /wp-admin/post.php, finally I found at sanitize_post_field function, $value = apply_filters(”pre_$field”, $value); to pretreat all submit data.
Here is my filter: Read the rest of this entry »
Hack WordPress “sanitize_title” Function
June 22, 2008 at 2:48 am · Filed under WordPress and tagged: WordPress, title, blog, english, strip_tags, preg_replace, apply_filters, php, wordpress hack, database, post_name
I use English as title only, recently I noticed some of my blog post has “%” in url (e.g.) or too too many dashes “—” in url (e.g.). !!!!! (2008/6/23 .. forget this method, check Ultimate WP Post Name URL Sanitize Solution)
So unacceptable. So I check the wordpress code and update the following:
function sanitize_title($title, $fallback_title = ”) {
$title = strip_tags($title);
$title = preg_replace(’/&.+?;/’, ”, $title); // Kill entities
$title = preg_replace(”/[^a-z0-9]+/i”, ” “, strtolower($title)); // Remove all non-english and non-number code
$title = trim(preg_replace(”/ {2,}/i”, ” “, $title)); // Remove extra space
$title = apply_filters(’sanitize_title’, $title);
if (empty($title)) {
$title = $fallback_title;
}
return $title;
}
at “formatting.php”.
Next thing: I serious think about shorter very long url (the post_name is varchar(200) in database)
