WordPress.org

Make WordPress Core

Ticket #34561: 34561.4.diff

File 34561.4.diff, 8.2 KB (added by juliobox, 3 years ago)
  • default-filters.php

     
    458458add_action( 'embed_head',             'rel_canonical'                         );
    459459add_action( 'embed_head',             'locale_stylesheet'                     );
    460460
     461add_action( 'embed_footer',           'print_embed_sharing_dialog'            );
    461462add_action( 'embed_footer',           'print_embed_scripts'                   );
    462463add_action( 'embed_footer',           'wp_print_footer_scripts',        20    );
    463464
     465add_filter( 'embed_content_share',    'print_embed_sharing_buttons'           );
     466
    464467add_filter( 'excerpt_more',           'wp_embed_excerpt_more',          20    );
    465468add_filter( 'the_excerpt_embed',      'wptexturize'                           );
    466469add_filter( 'the_excerpt_embed',      'convert_chars'                         );
  • embed-functions.php

     
    958958function _oembed_filter_feed_content( $content ) {
    959959        return str_replace( '<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="display:none;"', '<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"', $content );
    960960}
     961
     962/**
     963 * Prints the heading area of the embed template.
     964 *
     965 * This includes the post's title and the featured image
     966 * if available. On 404, it only displays a 'Not found' heading.
     967 *
     968 * @since 4.4.0
     969 */
     970function the_embed_header() {
     971        if ( is_404() ) {
     972                ?>
     973                <p class="wp-embed-heading"><?php _e( 'Oops! That embed can&#8217;t be found.' ); ?></p>
     974                <?php
     975                return;
     976        }
     977
     978        // Add post thumbnail to response if available.
     979        $thumbnail_id = $shape = $image_size = false;
     980
     981        if ( has_post_thumbnail() ) {
     982                $thumbnail_id = get_post_thumbnail_id();
     983        }
     984
     985        if ( 'attachment' === get_post_type() && wp_attachment_is_image() ) {
     986                $thumbnail_id = get_the_ID();
     987        }
     988
     989        if ( $thumbnail_id ) {
     990                $aspect_ratio = 1;
     991                $measurements = array( 1, 1 );
     992                $image_size   = 'full'; // Fallback.
     993
     994                $meta = wp_get_attachment_metadata( $thumbnail_id );
     995                if ( is_array( $meta ) ) {
     996                        foreach ( $meta['sizes'] as $size => $data ) {
     997                                if ( $data['width'] / $data['height'] > $aspect_ratio ) {
     998                                        $aspect_ratio = $data['width'] / $data['height'];
     999                                        $measurements = array( $data['width'], $data['height'] );
     1000                                        $image_size   = $size;
     1001                                }
     1002                        }
     1003                }
     1004
     1005                /**
     1006                 * Filter the thumbnail image size for use in the embed template.
     1007                 *
     1008                 * @since 4.4.0
     1009                 *
     1010                 * @param string $image_size Thumbnail image size.
     1011                 */
     1012                $image_size = apply_filters( 'embed_thumbnail_image_size', $image_size );
     1013
     1014                $shape = $measurements[0] / $measurements[1] >= 1.75 ? 'rectangular' : 'square';
     1015
     1016                /**
     1017                 * Filter the thumbnail shape for use in the embed template.
     1018                 *
     1019                 * Rectangular images are shown above the title
     1020                 * while square images are shown next to the content.
     1021                 *
     1022                 * @since 4.4.0
     1023                 *
     1024                 * @param string $shape Thumbnail image shape. Either 'rectangular' or 'square'.
     1025                 */
     1026                $shape = apply_filters( 'embed_thumbnail_image_shape', $shape );
     1027        }
     1028
     1029        if ( $thumbnail_id && 'rectangular' === $shape ) {
     1030                ?>
     1031                <div class="wp-embed-featured-image rectangular">
     1032                        <a href="<?php the_permalink(); ?>" target="_top">
     1033                                <?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
     1034                        </a>
     1035                </div>
     1036        <?php } ?>
     1037
     1038        <p class="wp-embed-heading"><a href="<?php the_permalink(); ?>" target="_top"><?php the_title(); ?></a></p>
     1039
     1040        <?php if ( $thumbnail_id && 'square' === $shape ) { ?>
     1041                <div class="wp-embed-featured-image square">
     1042                        <a href="<?php the_permalink(); ?>" target="_top">
     1043                                <?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
     1044                        </a>
     1045                </div>
     1046        <?php }
     1047}
     1048
     1049/**
     1050 * Prints the footer area of the embed template.
     1051 *
     1052 * This includes the site's title and
     1053 * sharing options if available.
     1054 *
     1055 * @since 4.4.0
     1056 */
     1057function the_embed_footer() {
     1058        $site_title = sprintf(
     1059                '<a href="%s" target="_top"><img src="%s" srcset="%s 2x" width="32" height="32" alt="" class="wp-embed-site-icon"/><span>%s</span></a>',
     1060                esc_url( home_url() ),
     1061                esc_url( get_site_icon_url( 32, admin_url( 'images/w-logo-blue.png' ) ) ),
     1062                esc_url( get_site_icon_url( 64, admin_url( 'images/w-logo-blue.png' ) ) ),
     1063                esc_html( get_bloginfo( 'name' ) )
     1064        );
     1065
     1066        /**
     1067         * Filter the site title in the embed footer.
     1068         *
     1069         * @since 4.4.0
     1070         *
     1071         * @param string $site_title The site title markup.
     1072         */
     1073        $site_title = apply_filters( 'embed_site_title', $site_title );
     1074        ?>
     1075        <div class="wp-embed-footer">
     1076                <div class="wp-embed-site-title">
     1077                        <?php echo $site_title; ?>
     1078                </div>
     1079                <?php if ( ! is_404() ) : ?>
     1080                        <div class="wp-embed-meta">
     1081                                <?php
     1082                                /**
     1083                                 * Print additional meta content in the embed template.
     1084                                 *
     1085                                 * @since 4.4.0
     1086                                 */
     1087                                do_action( 'embed_content_meta' );
     1088                                ?>
     1089                                <?php if ( get_comments_number() || comments_open() ) : ?>
     1090                                        <div class="wp-embed-comments">
     1091                                                <a href="<?php comments_link(); ?>" target="_top">
     1092                                                        <span class="dashicons dashicons-admin-comments"></span>
     1093                                                        <?php
     1094                                                        printf(
     1095                                                                _n(
     1096                                                                        '%s <span class="screen-reader-text">Comment</span>',
     1097                                                                        '%s <span class="screen-reader-text">Comments</span>',
     1098                                                                        get_comments_number()
     1099                                                                ),
     1100                                                                number_format_i18n( get_comments_number() )
     1101                                                        );
     1102                                                        ?>
     1103                                                </a>
     1104                                        </div>
     1105                                <?php
     1106                                endif;
     1107                                do_action( 'embed_content_share' );
     1108                                ?>
     1109                        </div>
     1110                <?php endif; ?>
     1111        </div>
     1112<?php
     1113}
     1114
     1115/**
     1116 * Prints the necessary markup for the embed sharing buttons.
     1117 *
     1118 * @since 4.4.0
     1119 */
     1120function print_embed_sharing_buttons() {
     1121        if ( is_404() ) {
     1122                return;
     1123        } ?>
     1124        <div class="wp-embed-share">
     1125                <button type="button" class="wp-embed-share-dialog-open" aria-label="<?php esc_attr_e( 'Open sharing dialog' ); ?>">
     1126                        <span class="dashicons dashicons-share"></span>
     1127                </button>
     1128        </div>
     1129<?php
     1130}
     1131
     1132/**
     1133 * Prints the necessary markup for the embed sharing dialog.
     1134 *
     1135 * @since 4.4.0
     1136 */
     1137function print_embed_sharing_dialog() {
     1138        if ( is_404() ) {
     1139                return;
     1140        }
     1141        ?>
     1142        <div class="wp-embed-share-dialog hidden" role="dialog" aria-label="<?php esc_attr_e( 'Sharing options' ); ?>">
     1143                <div class="wp-embed-share-dialog-content">
     1144                        <div class="wp-embed-share-dialog-text">
     1145                                <ul class="wp-embed-share-tabs" role="tablist">
     1146                                        <li class="wp-embed-share-tab-button wp-embed-share-tab-button-wordpress" role="presentation">
     1147                                                <button type="button" role="tab" aria-controls="wp-embed-share-tab-wordpress" aria-selected="true" tabindex="0"><?php esc_html_e( 'WordPress Embed' ); ?></button>
     1148                                        </li>
     1149                                        <li class="wp-embed-share-tab-button wp-embed-share-tab-button-html" role="presentation">
     1150                                                <button type="button" role="tab" aria-controls="wp-embed-share-tab-html" aria-selected="false" tabindex="-1"><?php esc_html_e( 'HTML Embed' ); ?></button>
     1151                                        </li>
     1152                                </ul>
     1153                                <div id="wp-embed-share-tab-wordpress" class="wp-embed-share-tab" role="tabpanel" aria-hidden="false">
     1154                                        <input type="text" value="<?php the_permalink(); ?>" class="wp-embed-share-input" aria-describedby="wp-embed-share-description-wordpress" tabindex="0" readonly/>
     1155
     1156                                        <p class="wp-embed-share-description" id="wp-embed-share-description-wordpress">
     1157                                                <?php _e( 'Copy and paste this URL into your WordPress site to embed' ); ?>
     1158                                        </p>
     1159                                </div>
     1160                                <div id="wp-embed-share-tab-html" class="wp-embed-share-tab" role="tabpanel" aria-hidden="true">
     1161                                        <textarea class="wp-embed-share-input" aria-describedby="wp-embed-share-description-html" tabindex="0" readonly><?php echo esc_textarea( get_post_embed_html( 600, 400 ) ); ?></textarea>
     1162
     1163                                        <p class="wp-embed-share-description" id="wp-embed-share-description-html">
     1164                                                <?php _e( 'Copy and paste this code into your site to embed' ); ?>
     1165                                        </p>
     1166                                </div>
     1167                        </div>
     1168
     1169                        <button type="button" class="wp-embed-share-dialog-close" aria-label="<?php esc_attr_e( 'Close sharing dialog' ); ?>">
     1170                                <span class="dashicons dashicons-no"></span>
     1171                        </button>
     1172                </div>
     1173        </div>
     1174        <?php
     1175}