WordPress.org

Make WordPress Core

Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#27335 closed defect (bug) (maybelater)

wp_insert_post() inserts posts of unregistered post types

Reported by: brocheafoin Owned by:
Milestone: Priority: normal
Severity: normal Version: 3.8.1
Component: Posts, Post Types Keywords:
Focuses: Cc:
PR Number:

Description

if you run something like this:

wp_insert_post(array(
    'post_title' => 'My Example',
    [...]
    'post_type' => 'bogus_post_type_that_is_not_registered'
));

Your post is inserted into the database and wp_insert_post() returns a post ID. I would have expected this to be an error.

Change History (5)

#1 @danielbachhuber
6 years ago

Thanks for the bug report, brocheafoin. Out of curiosity, how'd you end up with a bogus custom post type, and what sort of problems did this behavior cause for you?

#2 @nacin
6 years ago

I can't find my previous answer on this subject (may have been a ticket, but can't find it) — but basically, we deliberately don't restrict post types for compatibility reasons. Some were using the post_type field well before register_post_type() existed, and even then, it doesn't need to be an error condition. Most of WordPress won't recognize the post type, but wp_insert_post() is a low-level API (it's also a high-level API; yes, it's a problem) and doesn't care.

Adding an error now will likely cause other problems. I could picture a situation where someone is registering a post type, but somehow does so (at least in some situations) after a wp_insert_post() call.

#3 @brocheafoin
6 years ago

  • Resolution set to maybelater
  • Status changed from new to closed

@danielbachhuber: I'm writing a plugin that inserts a bunch of posts and I made a typo in my wp_insert_post() call. No posts were showing up, yet no errors either. Found the posts in the DB with my typo'ed post types. It's really a developer-only bug.

@nacin: I figured this had to have been discussed already, but I couldn't find it either.

wp_insert_post() is a low-level API (it's also a high-level API; yes, it's a problem)

I guess that's the main issue. And it's a can of worms probably best left unopened. I'm closing.

#4 @SergeyBiryukov
6 years ago

  • Milestone Awaiting Review deleted

#5 @knutsp
6 years ago

Some sort of warning or notice could be given.

Note: See TracTickets for help on using tickets.