[wp-trac] [WordPress Trac] #12955: Add get_post filter
WordPress Trac
noreply at wordpress.org
Sat Feb 13 02:14:28 UTC 2016
#12955: Add get_post filter
------------------------------------+-----------------------------
Reporter: JohnLamansky | Owner:
Type: feature request | Status: new
Priority: normal | Milestone: Future Release
Component: Posts, Post Types | Version:
Severity: normal | Resolution:
Keywords: has-patch dev-feedback | Focuses:
------------------------------------+-----------------------------
Comment (by MikeSchinkel):
Replying to [comment:31 chriscct7]:
> Feedback on the current patch ''(from
https://wordpress.slack.com/archives/core/p1452877984010589):''
>
> The current patch proposes deprecating the ability to call new `WP_Post`
in favor of calling `WP_Post::make_instance()`. I think a better path
forward would be to have the `__construct()` call `make_instance()`, as
there are so many plugins (and parts of core using new `WP_Post`) then
this is going to cause so many issues (it will be like deprecating
`WP_Widget::WP_Widget` but way worse).
> The patch also needs unit tests.
> Basically by using `make_instance()` the goal is to be able to filter
the returned object in `get_post()`
Completely agreed that it would be ideal to have the `__construct()` call
call `make_instance()`, but unfortunately PHP does not allow changing the
class of an object inside a constructor. A major goal here was to stop
`get_post()` from changing the object such that the following is always
true:
{{{#!php
<?php
$_post = get_post( $post );
echo $_post === $post // Can currently echo `false`
}}}
Yes it is an issue that plugins use `new WP_Post()` but that's the lesser
concern. That they do so does not cause the problem above.
To address your concern we could have a ''"soft deprecation"'' where no
warning or error is thrown for numerous releases, as long as `get_post()`
can be made to not change the object that it is being effectively used to
"cast" to `WP_Post`.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/12955#comment:32>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list