WordPress.org

Make WordPress Core

Opened 8 months ago

Last modified 11 days ago

#42826 new enhancement

Change get_oembed_response_data to apply filters to title

Reported by: mheikkila Owned by:
Milestone: 5.0 Priority: normal
Severity: normal Version: 4.4
Component: Embeds Keywords: has-patch
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 (1)

42826.diff (457 bytes) - added by chetan200891 8 months ago.
Created patch to change $post->post_title to get_the_title()

Download all attachments as: .zip

Change History (5)

#1 @swissspidy
8 months ago

  • Component changed from General to Embeds
  • Keywords needs-patch added
  • Type changed from defect (bug) to enhancement

Hey there

Thanks for your ticket!

Instead of using apply_filters() this should rather use get_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/

@chetan200891
8 months ago

Created patch to change $post->post_title to get_the_title()

This ticket was mentioned in Slack in #core by chetan200891. View the logs.


11 days ago

#3 @chetan200891
11 days ago

  • Keywords has-patch added; needs-patch removed

#4 @swissspidy
11 days 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 :-)

Note: See TracTickets for help on using tickets.