[wp-trac] [WordPress Trac] #16557: Ability to disable redirect_guess_404_permalink()
WordPress Trac
noreply at wordpress.org
Sun Dec 29 23:30:01 UTC 2019
#16557: Ability to disable redirect_guess_404_permalink()
------------------------------------+-----------------------------
Reporter: msafi | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Future Release
Component: Canonical | Version: 3.1
Severity: normal | Resolution:
Keywords: has-patch dev-feedback | Focuses:
------------------------------------+-----------------------------
Comment (by apedog):
I've written a clean fresh patch that I believe addresses all the issues
raised in this ticket.
I've added 3 new filters to {{{redirect_guess_404_permalink()}}}:
- {{{'do_redirect_guess_404_permalink'}}} - Allows disabling 404 guessing
altogether.
{{{
add_filter('do_redirect_guess_404_permalink', '__return_false');
}}}
- {{{'pre_redirect_guess_404_permalink'}}} - Allows short-circuit of
function and returning a custom guess from a callback. This is a much
needed functionality IMO. Especially with current WordPress handling. A
very easy way for plugins to hook in a custom guessing function while not
breaking anything else.
{{{
add_filter('pre_redirect_guess_404_permalink', 'my_custom_guess');
function my_custom_guess($pre){
return home_url('did-i-guess-right');
}
}}}
- {{{'strict_redirect_guess_404_permalink'}}} - Allows strict guesses
using {{{post_name = %s}}} SQL query instead of expensive (and overly
broad) {{{post_name LIKE %s}}}} query. So {{{slug}}} might redirect to
{{{parent/slug}}} but not to {{{sluggish-day}}}. Default is the current
non-strict {{{LIKE}}} query.
{{{
add_filter('strict_redirect_guess_404_permalink', '__return_true');
}}}
All filters are nested within single function. So code and logic are all
neatly tucked in one place. Nice for cohesion.
I've tested these filters locally and they work.
----
- Filters {{{'do_redirect_guess_404_permalink'}}} and
{{{'pre_redirect_guess_404_permalink'}}} can be merged into a single
filter. But semantically, disabling and short-circuiting are separate
concerns so I figured two filters would be clearer.
- Filter {{{'strict_redirect_guess_404_permalink'}}} touches the actual
logic. And might merit discussion. So maybe it could be considered
separately from the short-circuit filters.
@markjaquith
--
Ticket URL: <https://core.trac.wordpress.org/ticket/16557#comment:41>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list