#42826 closed enhancement (fixed)
Change get_oembed_response_data to apply filters to title
Reported by: | mheikkila | Owned by: | desrosj |
---|---|---|---|
Milestone: | 5.2 | Priority: | normal |
Severity: | normal | Version: | 4.4 |
Component: | Embeds | Keywords: | has-patch commit |
Focuses: | Cc: |
Description
The function get_oembed_response_data in wp-includes/embed.php outputs the title using
$post->post_title
This is a problem when the title includes special tags. For example, the very popular plugin qTranslateX (https://fi.wordpress.org/plugins/qtranslate-x/) does this to manage multilingual content. In this case, the function should use this to output the title:
apply_filters('the_title',$post->post_title)
The oembed content overrides the og tags. This is a problem for example when sharing a link to LinkedIn.
So here would be the new get_oembed_response_data function:
function get_oembed_response_data( $post, $width ) { $post = get_post( $post ); $width = absint( $width ); if ( ! $post ) { return false; } if ( 'publish' !== get_post_status( $post ) ) { return false; } /** * Filters the allowed minimum and maximum widths for the oEmbed response. * * @since 4.4.0 * * @param array $min_max_width { * Minimum and maximum widths for the oEmbed response. * * @type int $min Minimum width. Default 200. * @type int $max Maximum width. Default 600. * } */ $min_max_width = apply_filters( 'oembed_min_max_width', array( 'min' => 200, 'max' => 600 ) ); $width = min( max( $min_max_width['min'], $width ), $min_max_width['max'] ); $height = max( ceil( $width / 16 * 9 ), 200 ); $data = array( 'version' => '1.0', 'provider_name' => get_bloginfo( 'name' ), 'provider_url' => get_home_url(), 'author_name' => get_bloginfo( 'name' ), 'author_url' => get_home_url(), 'title' => apply_filters('the_title',$post->post_title), 'type' => 'link', ); $author = get_userdata( $post->post_author ); if ( $author ) { $data['author_name'] = $author->display_name; $data['author_url'] = get_author_posts_url( $author->ID ); } /** * Filters the oEmbed response data. * * @since 4.4.0 * * @param array $data The response data. * @param WP_Post $post The post object. * @param int $width The requested width. * @param int $height The calculated height. */ return apply_filters( 'oembed_response_data', $data, $post, $width, $height ); }
Attachments (2)
Change History (16)
#1
@
7 years ago
- Component changed from General to Embeds
- Keywords needs-patch added
- Type changed from defect (bug) to enhancement
This ticket was mentioned in Slack in #core by chetan200891. View the logs.
6 years ago
#4
@
6 years ago
- Milestone changed from Awaiting Review to 5.0
- Version set to 4.4
New attachments don‘t trigger notifications, so thanks for the comment :-)
#6
@
6 years ago
- Keywords needs-refresh added
- Milestone changed from 5.1 to 5.2
In 42826.diff, $post
needs to be passed to get_the_title()
.
#7
@
6 years ago
@pento Thanks for your suggestion. I have refreshed patch 42826.2.diff to pass $post
to get_the_title()
.
Hey there
Thanks for your ticket!
Instead of using
apply_filters()
this should rather useget_the_title()
.If you want to help create a proper patch for this, please have a look at https://make.wordpress.org/core/handbook/tutorials/working-with-patches/