[wp-trac] [WordPress Trac] #53262: wp_robots() (via wp_die) triggers a "doing_it_wrong_trigger_error", but should not.
WordPress Trac
noreply at wordpress.org
Sun May 23 21:43:29 UTC 2021
#53262: wp_robots() (via wp_die) triggers a "doing_it_wrong_trigger_error", but
should not.
--------------------------+-----------------------------
Reporter: juliobox | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: General | Version: 5.7
Severity: minor | Keywords:
Focuses: |
--------------------------+-----------------------------
Hello there.
In my plugin, I need to die early, like, right after the plugins are
loaded, imagine this for a shortcut:
`add_action( 'plugins_loaded', 'wp_die' );`
This is the output:
''Notice: is_embed was called incorrectly. Conditional query tags do not
work before the query is run. Before then, they always return false.
Please see Debugging in WordPress for more information. (This message was
added in version 3.1.0.) in /wp-includes/functions.php on line 5313''
{{{
# Time Memory Function Location
1 0.0002 369912 {main}( )
.../admin.php:0
2 0.0003 370552 require_once( '/wp-load.php' )
.../admin.php:34
3 0.0003 370960 require_once( '/wp-config.php' ) .../wp-
load.php:37
4 0.0003 375568 require_once( '/wp-settings.php' ) .../wp-
config.php:88
5 0.0410 1735152 do_action( ) .../wp-
settings.php:423
6 0.0411 1735528 WP_Hook->do_action( )
.../plugin.php:484
7 0.0411 1735528 WP_Hook->apply_filters( ) .../class-
wp-hook.php:316
8 0.0882 3856336 wp_die( ) .../class-
wp-hook.php:292
9 0.0882 3874480 _default_wp_die_handler( )
.../common.php:275
10 0.0884 3876304 wp_robots( )
.../functions.php:3497
11 0.0884 3876304 apply_filters( )
.../robots-template.php:32
12 0.0884 3876712 WP_Hook->apply_filters( )
.../plugin.php:212
13 0.0884 3878216 wp_robots_noindex_embeds( ) .../class-
wp-hook.php:292
14 0.0884 3878216 is_embed( )
.../robots-template.php:93
15 0.0884 3878216 _doing_it_wrong( )
.../query.php:881
16 0.0885 3879304 trigger_error ( )
.../functions.php:5313
}}}
another notice will be trigger, same thing but line 13 will be
`wp_robots_noindex_search`.
Since WP 5.7 the `wp_robots()` function is called in a `wp_die()`, but
`wp_die()` can be called before the query is done, this is not too soon to
die ''(for once, got it?)''.
A possible patch is to delay these default filters a bit later ''(wp-
includes/default-filters.php)'' instead of adding them right away:
{{{
add_action( 'wp', 'wp_late_robots_check' );
function wp_late_robots_check() {
add_filter( 'wp_robots', 'wp_robots_noindex_embeds' );
add_filter( 'wp_robots', 'wp_robots_noindex_search' );
}
}}}
Thanks for your attention.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/53262>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list