0

This may sound like a stupid question, but is there something like an ID associated with the post types (built in or custom) in WordPress?

I'm not interested in the actual post id, but wondering if there's something like this:

ID         Post type slug
-------------------------
0          post
1          page
2          slider
3          section
...

What I would need would be something like get_post_type_id( $post_type_slug ) so that when I call get_post_type_id( 'slider' ) it would return 2.

The reason: I'm building a post slider shortcode and I need a unique ID that could be in the form of #{$post_type}-slider-{$id}, to avoid duplicates and correctly apply JavaScript.

Thanks!

1 Answer 1

1

No there isn't, and it isn't necessary. Post type names are their own unique identifiers.

The primary reason there are no numeric IDs is because post types are registered on every page load in PHP, no table exists in the database for them, which means no row IDs. So there is no use for a unique ID that the post name doesn't already accomplish.

For this reason, you're perfectly fine to use the post types name in your ID attributes, post type names can't clash.

The same is true of taxonomy names, 2 taxonomies cannot share the same name.

2
  • Thanks Tom. "For this reason, you're perfectly fine to use the post types name in your ID attributes, post type names can't clash." - what if I need 2 sliders on the same page, of the same post type? I got around that by generating a random number and appending it to the ID, something like #{$post_type}-slider-{$random_number}.
    – George
    Oct 6, 2020 at 13:18
  • Then your sliders should themselves have a unique ID, but that's besides post types etc. Though i have to question why every single slide in your slider needs an id attribute, most sliders don't
    – Tom J Nowell
    Oct 6, 2020 at 14:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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