[wp-trac] [WordPress Trac] #40325: Potential bug with the “get_post_type” function
WordPress Trac
noreply at wordpress.org
Fri Mar 31 12:04:14 UTC 2017
#40325: Potential bug with the “get_post_type” function
-------------------------------+-----------------------------
Reporter: ancientro | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Posts, Post Types | Version: 4.7.3
Severity: normal | Keywords:
Focuses: |
-------------------------------+-----------------------------
I have encountered a weird behavior in the WP code, and I want to report
it, in case it is a bug.
I have posted it in the Support forum first and I was advised to make a
ticket here.
'''Replication:'''
I have a custom post type created. A function is added to the
'''before_delete_post''' hook. In this function, I am verifying the
current post type.
I used to verify it with the '''get_post_type();''' function but I have
found a problem with that in some cases. Now, I have replaced it with
'''global $post_type;'''
{{{
class My_Example {
public function build_admin() {
add_action('before_delete_post', array($this,
'delete_post'));
}
public function delete_post($post_id) {
$case1 = get_post_type();
global $post_type;
$case2 = $post_type;
}
}
}}}
On the posts listing page, in the Trash table, there are 3 says of
deleting posts:
1. The '''Delete Permanently''' button for each post.
2. The '''Empty Trash''' button.
3. And through '''Bulk Actions > Delete Permanently > Apply'''.
The '''get_post_type''' function returns the proper post type name only in
the 1st case. For the other 2 cases, it returns '''false'''.
However, '''global $post_type''' returns the proper value in all cases.
I don’t know if it is a bug but it seems that way on the surface. If the
global post type variable is set well, then the function should be able to
return it too but I am not sure if something else it at play here.
A bit more info:
Looking over the source code for the
[https://developer.wordpress.org/reference/functions/get_post_type/
get_post_type] function in Code Reference, I see that it is using the
[https://developer.wordpress.org/reference/functions/get_post/ get_post]
function to retrieve an object, instance of '''WP_Post''', from which it
gets the post type.
So, the value is retrieved from different locations in the two examples.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/40325>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list