[wp-trac] [WordPress Trac] #42826: Change get_oembed_response_data to apply filters to title

WordPress Trac noreply at wordpress.org
Thu Dec 7 12:42:13 UTC 2017


#42826: Change get_oembed_response_data to apply filters to title
--------------------------+-----------------------------
 Reporter:  mheikkila     |      Owner:
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  General       |    Version:
 Severity:  normal        |   Keywords:
  Focuses:                |
--------------------------+-----------------------------
 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 );
 }
 }}}

--
Ticket URL: <https://core.trac.wordpress.org/ticket/42826>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list