Quick Tip: Check to See if a Slug Exists in WordPress

Recently I was doing some work where I was importing RSS entries into a Custom Post Type in WordPress. Since there were no common IDs between the feed and WordPress, to prevent duplicate entries I tried comparing titles. This also proved to be an issue as titles aren’t always unique, and they weren’t in this case. I settled on comparing slugs; WordPress creates a unique slug for each post from the title, and there’s a way to know what that slug is going to be before the post is added.

Assuming that our RSS entries are in an Object called $item, we do this to get the slug:

$title= wp_strip_all_tags($item->title);
 $slug = sanitize_title($title);

The first function will remove all HTML tags from the title that was passed in; it was unclear if the next function, sanitize_title(), did that, so I took the extra precaution.

sanitize_title() is where the magic happens. It takes a now HTML-less string and converts it to a string that can be used in URLs; this is the would-be slug. You can then pass that slug to this query to see if a post with this slug already exists:

$post_if = $wpdb->get_var("SELECT count(post_title) FROM $wpdb->posts WHERE post_name like '".$slug."'");

If $post_if is < 1 at this point, the post doesn’t exist. Do with it what you will! If that’s the specific slug you want to use, you can also add it to the post array like this(assuming you’re using $post_array):

$post_array['post_name'] = $slug;

And there you have it! Feel free to comment your thoughts, improvements, and clarifications.

Similar Posts

  • | |

    Deleting 3 Million Spam Comments from a WordPress Database

    Over at the Crowd Favorite blog, I wrote up a post about an interesting problem I solved recently. I laid out everything you need to know there, but it involves downloading a HUGE database and putting WP-CLI to good use. If you haven’t used it before and you do development with WordPress, it’s super valuable….

  • |

    Make wp-caption the same (responsive) width as the Image

    I was working on a problem last week in WordPress where the caption for an image was extending the whole width of the container, not staying the width of the image. This make sense – the image is inside the .wp-caption container. So how to we fix it? Let me tell you!

  • |

    Gloss WordPress Plugin

    Note: This article was published while I was in my early 20s. I was much younger and dumber. Please don’t hold it against me. One of the perils of having a 20+ year old website!Today, I officially released my first public WordPress plugin, Gloss. Gloss is a dictionary/glossary management plugin I decided to build which…

  • |

    WP Engine Easter Egg Saves You 20%

    I got a hot tip in my inbox today from one of my favorite hosting companies, WP Engine. For a limited time, when you visit their website and put in the Konami Code (below), you’ll save 20% on your purchase. To activate this discount, enter the following code using arrows and letters on their keyboard when…

  • |

    I’m Working at Crowd Favorite

    …or, “I really can’t wait to work for Chris Lema.”* Today, I’m very excited to announce that starting in September, I will be a Front End Developer at Crowd Favorite.  I have been following the company since Alex King started it, love the work they do, and could not be happier to join a team…

  • |

    A Year of Responsive Design with WordPress

    A little over a year ago, my second book (and the first one to actually be in book stores) came out. It’s called Responsive Design with WordPress and it’s all about how to leverage WordPress to create responsive themes. It’s been an incredible year and I wanted to talk about two things: what has happened since the book’s release,…

One Comment

  1. Savior! A decade later your post_if snippet still works. Does what is_page() should be doing imho, which is check the entire site for presence of a slug, instead of only the one being visited.

Comments are closed.