#24232 closed defect (bug) (fixed)
Don't Use the_title Filter in get_adjacent_post_rel_link()
Reported by: | mordauk | Owned by: | markjaquith |
---|---|---|---|
Milestone: | 3.6 | Priority: | normal |
Severity: | major | Version: | 2.8 |
Component: | Template | Keywords: | has-patch commit needs-codex |
Focuses: | Cc: |
Description
The get_adjacent_post_rel_link() function applies the the_title
filter to the post title before setting it up in the <link>
tags.
It's really common for the the_title
filter to be used to modify the actual HTML markup of post titles (see this example for adding product micro data), but this results in improperly formatting <link>
tags. See this github issue for an example of the result.
get_adjacent_post_rel_link()
should be using an equivalent to the_title_attribute()
instead. Since there is not a get_the_title_attribute()
function, I propose two options:
- Introduce a
get_the_title_attribute( $post_id )
function and then use this inget_adjacent_post_rel_link()
- Simply remove
apply_filters()
and add inesc_attr( strip_tags( $title ) )
instead.
My vote would be to introduce a get_the_title_attribute()
function.
Attachments (3)
Change History (17)
#6
@
11 years ago
Hmm. I don't know. Injecting HTML like that seems wrong. Or that it should at least have an "in the loop" safety check. But that's besides the point. We should be using the_title_attribute()
here (it has an echo flag).
#7
@
11 years ago
Doh. But you can't pass in a post ID to the_title_attribute()
. It is loop-only.
We can't lose the the_title
filter here... that would be unexpected. We should, however, strip tags. Patch coming.
#8
@
11 years ago
- Milestone changed from Awaiting Review to 3.6
- Owner set to markjaquith
- Status changed from new to accepted
24232.2.diff Alternative approach: allow the_title_attribute()
to take a post
argument.
Note that this doesn't solve mordauk's issue. Instead, Pippin, I suggest that you put a safety check on your callback such that it bails if ! did_action( 'wp_head' )
.
I'm opting for simply removing the "the_title" filter.