Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have a arbitrary string and want to check if a post with that slug string exists in the site. I tried to find a way to list all slugs, but can't find such a thing. Thanks

share|improve this question

3 Answers 3

Do you mean post slug? You can try to make use of wp_unique_post_slug() that WP uses to generate those. If I remember right if slug you are trying to use is not unique it will be returned with numerical index appended.

share|improve this answer
1  
sorry to reply so late. Yes post slug is the slug I want. Unfortunately I don't have the post_id which is required to use wp_unique_post_slug() –  lulalala Aug 22 '11 at 1:43
    
I couldn't figure out how to use wp_unique_post_slug to do this anyway. It does really check to see if a slug exists, as much as create one. I could be wrong or misinterpreting something but in my testing it would not check if something already existed. –  Nathan May 14 at 23:20
$args = array('name' => $slugName, 'post_type' => $postType); 

$slug_query = new WP_Query($args);
echo "<pre>";
var_dump($slug_query);
exit;

You then have more than enough information to test if a post was returned or not, hope this helps.

share|improve this answer
    
How this will extract slug uniqueness? –  Rahil Wazir Feb 12 at 21:09

This is what you're looking for, tested and I use it on my own sites:

function the_slug_exists($post_name) {
    global $wpdb;
    if($wpdb->get_row("SELECT post_name FROM wp_posts WHERE post_name = '" . $post_name . "'", 'ARRAY_A')) {
        return true;
    } else {
        return false;
    }
}

You can then use it like this:

if (the_slug_exists('contact')) {
    // do something
}

Replace contact with whatever slug you want to test for.

share|improve this answer

protected by Community Apr 10 '13 at 12:42

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.