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

  • |

    Fleshing Out My Work Week

    I have a confession: I’m in a bit of a funk. April was not a very productive for me. We were in Disney World for 8 days, and the rest of it, I was either sick or recovering from being sick. Trying to balance the different types of work I do and properly boxing time…

  • |

    Building Web Apps with WordPress

    I just finished reading up a book that was co-written by my friend Jason Coleman called Building Web Apps with WordPress. I picked it up because while I’m generally good at developing themes, I know there were some things I was missing- types of code, optimizations, plugin best practices, etc. I wanted to improve my WordPress…

  • |

    Videos from May 2019

    It’s been a crazy month, and I barely blogged, but that doesn’t mean I wasn’t pumping out content. Here’s a roundup of all the video (and other content I put out in May 2019.

  • | |

    Your Personal Website

    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!I’m doing a lecture on Monday, telling students how to properly build a website to promote themselves. After the jump is…

  • |

    I’m Returning to the World of Full Time Self-Employment

    Six years ago when I got a job at The University of Scranton, it was a little bittersweet. For 2 years following my Masters Degree, I was self-employed. The thing that lead me to look for a new job was that I was working out of my parents’ house, and honestly, time was running out on…

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.