Opened 5 years ago
Closed 5 years ago
#53336 closed defect (bug) (wontfix)
Deleting CPT post by code (ie in a plugin) redirects to the main post type.
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Milestone: | Priority: | normal | |
| Severity: | normal | Version: | 5.7.2 |
| Component: | General | Keywords: | |
| Focuses: | administration | Cc: |
Description
- Create a CPT
- In functions.php or in a plugin, hook on 'save_post' to perform some calculations upon hitting the Publish button in WP-Admin...
- Inside the hook's code include some conditional logic that under certain circumstances it will delete the CPT post that is just being created. Ie study the following piece of code:
add_action('save_post', 'import_external_data', 10, 2);
function import_external_data($post_id, $post)
{
if ($post->post_status == 'publish' && $post->post_type == 'movie') {
// Check if movie exists
$movies = get_posts(array(
'numberposts' => 1,
'post_status' => 'publish',
'post_type' => 'movie',
'meta_key' => 'movie_id',
'meta_value' => $post->post_content,
))[0];
if (empty($movies)) {
// Various actions take place here
} else {
wp_delete_post($post_id, true);
}
}
}
- Once the post is deleted you are redirected to the stock post type (?post_type=<CPT_slug> part of the URL is gone)
Change History (2)
Note: See
TracTickets for help on using
tickets.
Hi @princeofabyss !
Thanks for submitting the ticket.
This was talked about in βa triage session today.
I'll give a synopsis based on the feedback there.
The issue is that once a post is deleted, WordPress can't reliably determine what the CPT of the post was.
For this reason, the consensus was to close the ticket as
wontfix.As far as a way forward: One suggestion was to reconsider the architecture of what you're building to see if there's a way to do it without deleting the post in that location, like returning an error before the post is saved.
Thanks again, and sorry for the disappointing news -- I hope this recommendation is helpful.