Make WordPress Core

Ticket #34204: 34204.8.diff

File 34204.8.diff, 35.4 KB (added by peterwilsoncc, 9 years ago)
  • Gruntfile.js

    diff --git a/Gruntfile.js b/Gruntfile.js
    index 9038f55..4d56e01 100644
    a b module.exports = function(grunt) { 
    146146                },
    147147                cssmin: {
    148148                        options: {
    149                                 'wp-admin': ['wp-admin', 'color-picker', 'customize-controls', 'customize-widgets', 'customize-nav-menus', 'ie', 'install', 'login', 'press-this', 'deprecated-*']
     149                                'wp-admin': ['wp-admin', 'color-picker', 'customize-controls', 'customize-widgets', 'customize-nav-menus', 'ie', 'install', 'login', 'press-this', 'deprecated-*'],
     150                                compatibility: 'ie7'
    150151                        },
    151152                        core: {
    152153                                expand: true,
    module.exports = function(grunt) { 
    233234
    234235                                        // Exceptions
    235236                                        '!wp-includes/css/dashicons.css',
    236                                         '!wp-includes/css/wp-embed-template.css'
     237                                        '!wp-includes/css/wp-embed-template.css',
     238                                        '!wp-includes/css/wp-embed-template-ie.css'
    237239                                ]
    238240                        },
    239241                        colors: {
  • new file src/wp-includes/css/wp-embed-template-ie.css

    diff --git a/src/wp-includes/css/wp-embed-template-ie.css b/src/wp-includes/css/wp-embed-template-ie.css
    new file mode 100644
    index 0000000..67473e0
    - +  
     1/* Dashicons */
     2.dashicons {
     3        *display: inline;
     4        *zoom: 1;
     5}
     6
     7.dashicons-no {
     8        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAQAAAAngNWGAAAAcElEQVR4AdXRVxmEMBAGwJMQCUhAIhKQECmRsFJwMFfp7HfP/E8pk0173CuKpt/0R+WaBaaZqogLagBMuh+DdoKbyRCwqZ/SnM0R5oQuZ2UHS8Z6k23qPxZCTrV5UlHMi8bsfHVXP7K/GXZHaTO7S54CWLdHlN2YIwAAAABJRU5ErkJggg==);
     9        *background-image: url(../images/embed/close.png);
     10}
     11
     12.dashicons-admin-comments {
     13        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAATUlEQVR4AWMYWqCpvUcAiA8A8X9iMFStAD4DG0AKScQNVDZw1MBRAwvIMLCA5jmFlCD4AMQGlOTtBgoNwzQQ3TCKDaTcMMxYN2AYVgAAYPKsEBxN0PIAAAAASUVORK5CYII=);
     14        *background-image: url(../images/embed/comment.png);
     15        *background-position: 0 0;
     16}
     17
     18.wp-embed-comments a:hover .dashicons-admin-comments {
     19        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAATElEQVR4AWMYYqB4lQAQHwDi/8RgqFoBfAY2gBSSiBuobOCogaMGFpBhYAEdcwrhIPgAxAaU5O0GCg3DNBDdMIoNpNwwzFg3YBhWAABG71qAFYcFqgAAAABJRU5ErkJggg==);
     20        *background-image: url(../images/embed/comment.png);
     21        *background-position: 0 -40px;
     22}
     23
     24.dashicons-share {
     25        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAc0lEQVR4AWMYfqCpvccAiBcA8X8gfgDEBZQaeAFkGBoOoMR1/7HgDeQa2ECZgQiDHID4AMwAor0MCmBoQP+HBnwAskFQdgBRkQJViGk7wiAHUr21AYdhDTA1dDOQHl6mPFLokmwoT9j0z3qUFw70L77oDwAiuzCIub1XpQAAAABJRU5ErkJggg==);
     26        *background-image: url(../images/embed/share.png);
     27        *background-position: 0 0;
     28        *display: none;
     29}
     30
     31.js .dashicons-share {
     32        *display: inline;
     33        *zoom: 1;
     34}
     35
     36
     37.wp-embed-share-dialog-open:hover .dashicons-share {
     38        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAc0lEQVR4AWMYhqB4lQEQLwDi/0D8AIgLKDXwAsgwNBxAiev+Y8EbyDWwgTIDEQY5APEBmAFEexkUwNCA/g8N+ABkg6DsAKIiBaoQ03aEQQ6kemsDDsMaYEroZiA9vEx5pNAl2VCesOmf9SgvHOhffNEfAAAMqPR5IEZH5wAAAABJRU5ErkJggg==);
     39        *background-image: url(../images/embed/share.png);
     40        *background-position: 0 -40px;
     41}
     42
     43.wp-embed {
     44        *width: auto;
     45}
     46
     47.wp-embed-site-title a {
     48        *display: inline;
     49        *zoom: 1;
     50}
     51
     52.wp-embed-site-title,
     53.wp-embed-meta {
     54        *display: inline;
     55        *zoom: 1;
     56}
     57
     58.wp-embed-comments,
     59.wp-embed-share {
     60        *zoom: 1;
     61}
     62
     63.wp-embed-comments a {
     64        *display: inline;
     65        *zoom: 1;
     66}
     67
     68.wp-embed-share-tab-button {
     69        *display: inline;
     70        *zoom: 1;
     71}
     72 No newline at end of file
  • src/wp-includes/css/wp-embed-template.css

    diff --git a/src/wp-includes/css/wp-embed-template.css b/src/wp-includes/css/wp-embed-template.css
    index 9ea586b..ded7030 100644
    a b body { 
    4646
    4747.dashicons-share {
    4848        background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.5%2012q1.24%200%202.12.88T17.5%2015t-.88%202.12-2.12.88-2.12-.88T11.5%2015q0-.34.09-.69l-4.38-2.3Q6.32%2013%205%2013q-1.24%200-2.12-.88T2%2010t.88-2.12T5%207q1.3%200%202.21.99l4.38-2.3q-.09-.35-.09-.69%200-1.24.88-2.12T14.5%202t2.12.88T17.5%205t-.88%202.12T14.5%208q-1.3%200-2.21-.99l-4.38%202.3Q8%209.66%208%2010t-.09.69l4.38%202.3q.89-.99%202.21-.99z%27%20fill%3D%27%2382878c%27%2F%3E%3C%2Fsvg%3E");
     49        display: none;
     50}
     51
     52.js .dashicons-share {
     53        display: inline-block;
    4954}
    5055
    5156.wp-embed-share-dialog-open:hover .dashicons-share {
    p.wp-embed-heading { 
    178183        left: 0;
    179184        right: 0;
    180185        bottom: 0;
     186        background-color: #222;
    181187        background-color: rgba(10, 10, 10, 0.9);
    182188        color: #fff;
    183189        opacity: 1;
    p.wp-embed-heading { 
    254260}
    255261
    256262.wp-embed-share-tab-button {
    257         display: inline;
     263        display: inline-block;
    258264}
    259265
    260266.wp-embed-share-tab-button button {
  • src/wp-includes/default-filters.php

    diff --git a/src/wp-includes/default-filters.php b/src/wp-includes/default-filters.php
    index 684bea4..8ee28ed 100644
    a b add_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 ); 
    447447add_action( 'wp_head',                'wp_oembed_add_discovery_links'         );
    448448add_action( 'wp_head',                'wp_oembed_add_host_js'                 );
    449449
     450add_action( 'embed_head',             'enqueue_embed_scripts',           1    );
    450451add_action( 'embed_head',             'print_emoji_detection_script'          );
    451 add_action( 'embed_head',             'print_emoji_styles'                    );
    452452add_action( 'embed_head',             'print_embed_styles'                    );
    453453add_action( 'embed_head',             'wp_print_head_scripts',          20    );
    454454add_action( 'embed_head',             'wp_print_styles',                20    );
  • new file src/wp-includes/default-filters.php.orig

    diff --git a/src/wp-includes/default-filters.php.orig b/src/wp-includes/default-filters.php.orig
    new file mode 100644
    index 0000000..684bea4
    - +  
     1<?php
     2/**
     3 * Sets up the default filters and actions for most
     4 * of the WordPress hooks.
     5 *
     6 * If you need to remove a default hook, this file will
     7 * give you the priority for which to use to remove the
     8 * hook.
     9 *
     10 * Not all of the default hooks are found in default-filters.php
     11 *
     12 * @package WordPress
     13 */
     14
     15// Strip, trim, kses, special chars for string saves
     16foreach ( array( 'pre_term_name', 'pre_comment_author_name', 'pre_link_name', 'pre_link_target', 'pre_link_rel', 'pre_user_display_name', 'pre_user_first_name', 'pre_user_last_name', 'pre_user_nickname' ) as $filter ) {
     17        add_filter( $filter, 'sanitize_text_field'  );
     18        add_filter( $filter, 'wp_filter_kses'       );
     19        add_filter( $filter, '_wp_specialchars', 30 );
     20}
     21
     22// Strip, kses, special chars for string display
     23foreach ( array( 'term_name', 'comment_author_name', 'link_name', 'link_target', 'link_rel', 'user_display_name', 'user_first_name', 'user_last_name', 'user_nickname' ) as $filter ) {
     24        if ( is_admin() ) {
     25                // These are expensive. Run only on admin pages for defense in depth.
     26                add_filter( $filter, 'sanitize_text_field'  );
     27                add_filter( $filter, 'wp_kses_data'       );
     28        }
     29        add_filter( $filter, '_wp_specialchars', 30 );
     30}
     31
     32// Kses only for textarea saves
     33foreach ( array( 'pre_term_description', 'pre_link_description', 'pre_link_notes', 'pre_user_description' ) as $filter ) {
     34        add_filter( $filter, 'wp_filter_kses' );
     35}
     36
     37// Kses only for textarea admin displays
     38if ( is_admin() ) {
     39        foreach ( array( 'term_description', 'link_description', 'link_notes', 'user_description' ) as $filter ) {
     40                add_filter( $filter, 'wp_kses_data' );
     41        }
     42        add_filter( 'comment_text', 'wp_kses_post' );
     43}
     44
     45// Email saves
     46foreach ( array( 'pre_comment_author_email', 'pre_user_email' ) as $filter ) {
     47        add_filter( $filter, 'trim'           );
     48        add_filter( $filter, 'sanitize_email' );
     49        add_filter( $filter, 'wp_filter_kses' );
     50}
     51
     52// Email admin display
     53foreach ( array( 'comment_author_email', 'user_email' ) as $filter ) {
     54        add_filter( $filter, 'sanitize_email' );
     55        if ( is_admin() )
     56                add_filter( $filter, 'wp_kses_data' );
     57}
     58
     59// Save URL
     60foreach ( array( 'pre_comment_author_url', 'pre_user_url', 'pre_link_url', 'pre_link_image',
     61        'pre_link_rss', 'pre_post_guid' ) as $filter ) {
     62        add_filter( $filter, 'wp_strip_all_tags' );
     63        add_filter( $filter, 'esc_url_raw'       );
     64        add_filter( $filter, 'wp_filter_kses'    );
     65}
     66
     67// Display URL
     68foreach ( array( 'user_url', 'link_url', 'link_image', 'link_rss', 'comment_url', 'post_guid' ) as $filter ) {
     69        if ( is_admin() )
     70                add_filter( $filter, 'wp_strip_all_tags' );
     71        add_filter( $filter, 'esc_url'           );
     72        if ( is_admin() )
     73                add_filter( $filter, 'wp_kses_data'    );
     74}
     75
     76// Slugs
     77add_filter( 'pre_term_slug', 'sanitize_title' );
     78
     79// Keys
     80foreach ( array( 'pre_post_type', 'pre_post_status', 'pre_post_comment_status', 'pre_post_ping_status' ) as $filter ) {
     81        add_filter( $filter, 'sanitize_key' );
     82}
     83
     84// Mime types
     85add_filter( 'pre_post_mime_type', 'sanitize_mime_type' );
     86add_filter( 'post_mime_type', 'sanitize_mime_type' );
     87
     88// Places to balance tags on input
     89foreach ( array( 'content_save_pre', 'excerpt_save_pre', 'comment_save_pre', 'pre_comment_content' ) as $filter ) {
     90        add_filter( $filter, 'convert_invalid_entities' );
     91        add_filter( $filter, 'balanceTags', 50 );
     92}
     93
     94// Format strings for display.
     95foreach ( array( 'comment_author', 'term_name', 'link_name', 'link_description', 'link_notes', 'bloginfo', 'wp_title', 'widget_title' ) as $filter ) {
     96        add_filter( $filter, 'wptexturize'   );
     97        add_filter( $filter, 'convert_chars' );
     98        add_filter( $filter, 'esc_html'      );
     99}
     100
     101// Format WordPress
     102foreach ( array( 'the_content', 'the_title', 'wp_title' ) as $filter )
     103        add_filter( $filter, 'capital_P_dangit', 11 );
     104add_filter( 'comment_text', 'capital_P_dangit', 31 );
     105
     106// Format titles
     107foreach ( array( 'single_post_title', 'single_cat_title', 'single_tag_title', 'single_month_title', 'nav_menu_attr_title', 'nav_menu_description' ) as $filter ) {
     108        add_filter( $filter, 'wptexturize' );
     109        add_filter( $filter, 'strip_tags'  );
     110}
     111
     112// Format text area for display.
     113foreach ( array( 'term_description' ) as $filter ) {
     114        add_filter( $filter, 'wptexturize'      );
     115        add_filter( $filter, 'convert_chars'    );
     116        add_filter( $filter, 'wpautop'          );
     117        add_filter( $filter, 'shortcode_unautop');
     118}
     119
     120// Format for RSS
     121add_filter( 'term_name_rss', 'convert_chars' );
     122
     123// Pre save hierarchy
     124add_filter( 'wp_insert_post_parent', 'wp_check_post_hierarchy_for_loops', 10, 2 );
     125add_filter( 'wp_update_term_parent', 'wp_check_term_hierarchy_for_loops', 10, 3 );
     126
     127// Display filters
     128add_filter( 'the_title', 'wptexturize'   );
     129add_filter( 'the_title', 'convert_chars' );
     130add_filter( 'the_title', 'trim'          );
     131
     132add_filter( 'the_content', 'wptexturize'                       );
     133add_filter( 'the_content', 'convert_smilies'                   );
     134add_filter( 'the_content', 'convert_chars'                     );
     135add_filter( 'the_content', 'wpautop'                           );
     136add_filter( 'the_content', 'shortcode_unautop'                 );
     137add_filter( 'the_content', 'prepend_attachment'                );
     138add_filter( 'the_content', 'wp_make_content_images_responsive' );
     139
     140add_filter( 'the_excerpt',     'wptexturize'      );
     141add_filter( 'the_excerpt',     'convert_smilies'  );
     142add_filter( 'the_excerpt',     'convert_chars'    );
     143add_filter( 'the_excerpt',     'wpautop'          );
     144add_filter( 'the_excerpt',     'shortcode_unautop');
     145add_filter( 'get_the_excerpt', 'wp_trim_excerpt'  );
     146
     147add_filter( 'comment_text', 'wptexturize'            );
     148add_filter( 'comment_text', 'convert_chars'          );
     149add_filter( 'comment_text', 'make_clickable',      9 );
     150add_filter( 'comment_text', 'force_balance_tags', 25 );
     151add_filter( 'comment_text', 'convert_smilies',    20 );
     152add_filter( 'comment_text', 'wpautop',            30 );
     153
     154add_filter( 'comment_excerpt', 'convert_chars' );
     155
     156add_filter( 'list_cats',         'wptexturize' );
     157
     158add_filter( 'wp_sprintf', 'wp_sprintf_l', 10, 2 );
     159
     160add_filter( 'widget_text', 'balanceTags' );
     161
     162// RSS filters
     163add_filter( 'the_title_rss',      'strip_tags'                    );
     164add_filter( 'the_title_rss',      'ent2ncr',                    8 );
     165add_filter( 'the_title_rss',      'esc_html'                      );
     166add_filter( 'the_content_rss',    'ent2ncr',                    8 );
     167add_filter( 'the_content_feed',   'wp_staticize_emoji'            );
     168add_filter( 'the_content_feed',   '_oembed_filter_feed_content'   );
     169add_filter( 'the_excerpt_rss',    'convert_chars'                 );
     170add_filter( 'the_excerpt_rss',    'ent2ncr',                    8 );
     171add_filter( 'comment_author_rss', 'ent2ncr',                    8 );
     172add_filter( 'comment_text_rss',   'ent2ncr',                    8 );
     173add_filter( 'comment_text_rss',   'esc_html'                      );
     174add_filter( 'comment_text_rss',   'wp_staticize_emoji'            );
     175add_filter( 'bloginfo_rss',       'ent2ncr',                    8 );
     176add_filter( 'the_author',         'ent2ncr',                    8 );
     177add_filter( 'the_guid',           'esc_url'                       );
     178
     179// Email filters
     180add_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
     181
     182// Misc filters
     183add_filter( 'option_ping_sites',        'privacy_ping_filter'                 );
     184add_filter( 'option_blog_charset',      '_wp_specialchars'                    ); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop
     185add_filter( 'option_blog_charset',      '_canonical_charset'                  );
     186add_filter( 'option_home',              '_config_wp_home'                     );
     187add_filter( 'option_siteurl',           '_config_wp_siteurl'                  );
     188add_filter( 'tiny_mce_before_init',     '_mce_set_direction'                  );
     189add_filter( 'teeny_mce_before_init',    '_mce_set_direction'                  );
     190add_filter( 'pre_kses',                 'wp_pre_kses_less_than'               );
     191add_filter( 'sanitize_title',           'sanitize_title_with_dashes',   10, 3 );
     192add_action( 'check_comment_flood',      'check_comment_flood_db',       10, 3 );
     193add_filter( 'comment_flood_filter',     'wp_throttle_comment_flood',    10, 3 );
     194add_filter( 'pre_comment_content',      'wp_rel_nofollow',              15    );
     195add_filter( 'comment_email',            'antispambot'                         );
     196add_filter( 'option_tag_base',          '_wp_filter_taxonomy_base'            );
     197add_filter( 'option_category_base',     '_wp_filter_taxonomy_base'            );
     198add_filter( 'the_posts',                '_close_comments_for_old_posts', 10, 2);
     199add_filter( 'comments_open',            '_close_comments_for_old_post', 10, 2 );
     200add_filter( 'pings_open',               '_close_comments_for_old_post', 10, 2 );
     201add_filter( 'editable_slug',            'urldecode'                           );
     202add_filter( 'editable_slug',            'esc_textarea'                        );
     203add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object'        );
     204add_filter( 'pingback_ping_source_uri', 'pingback_ping_source_uri'            );
     205add_filter( 'xmlrpc_pingback_error',    'xmlrpc_pingback_error'               );
     206add_filter( 'title_save_pre',           'trim'                                );
     207
     208add_filter( 'http_request_host_is_external', 'allowed_http_request_hosts', 10, 2 );
     209
     210// REST API filters.
     211add_action( 'xmlrpc_rsd_apis',            'rest_output_rsd' );
     212add_action( 'wp_head',                    'rest_output_link_wp_head', 10, 0 );
     213add_action( 'template_redirect',          'rest_output_link_header', 11, 0 );
     214add_action( 'auth_cookie_malformed',      'rest_cookie_collect_status' );
     215add_action( 'auth_cookie_expired',        'rest_cookie_collect_status' );
     216add_action( 'auth_cookie_bad_username',   'rest_cookie_collect_status' );
     217add_action( 'auth_cookie_bad_hash',       'rest_cookie_collect_status' );
     218add_action( 'auth_cookie_valid',          'rest_cookie_collect_status' );
     219add_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );
     220
     221// Actions
     222add_action( 'wp_head',             '_wp_render_title_tag',            1     );
     223add_action( 'wp_head',             'wp_enqueue_scripts',              1     );
     224add_action( 'wp_head',             'feed_links',                      2     );
     225add_action( 'wp_head',             'feed_links_extra',                3     );
     226add_action( 'wp_head',             'rsd_link'                               );
     227add_action( 'wp_head',             'wlwmanifest_link'                       );
     228add_action( 'wp_head',             'adjacent_posts_rel_link_wp_head', 10, 0 );
     229add_action( 'wp_head',             'locale_stylesheet'                      );
     230add_action( 'publish_future_post', 'check_and_publish_future_post',   10, 1 );
     231add_action( 'wp_head',             'noindex',                          1    );
     232add_action( 'wp_head',             'print_emoji_detection_script',     7    );
     233add_action( 'wp_head',             'wp_print_styles',                  8    );
     234add_action( 'wp_head',             'wp_print_head_scripts',            9    );
     235add_action( 'wp_head',             'wp_generator'                           );
     236add_action( 'wp_head',             'rel_canonical'                          );
     237add_action( 'wp_head',             'wp_shortlink_wp_head',            10, 0 );
     238add_action( 'wp_head',             'wp_site_icon',                    99    );
     239add_action( 'wp_footer',           'wp_print_footer_scripts',         20    );
     240add_action( 'template_redirect',   'wp_shortlink_header',             11, 0 );
     241add_action( 'wp_print_footer_scripts', '_wp_footer_scripts'                 );
     242add_action( 'init',                'check_theme_switched',            99    );
     243add_action( 'after_switch_theme',  '_wp_sidebars_changed'                   );
     244add_action( 'wp_print_styles',     'print_emoji_styles'                     );
     245
     246if ( isset( $_GET['replytocom'] ) )
     247    add_action( 'wp_head', 'wp_no_robots' );
     248
     249// Login actions
     250add_action( 'login_head',          'wp_print_head_scripts',         9     );
     251add_action( 'login_head',          'wp_site_icon',                  99    );
     252add_action( 'login_footer',        'wp_print_footer_scripts',       20    );
     253add_action( 'login_init',          'send_frame_options_header',     10, 0 );
     254
     255// Feed Generator Tags
     256foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' ) as $action ) {
     257        add_action( $action, 'the_generator' );
     258}
     259
     260// Feed Site Icon
     261add_action( 'atom_head', 'atom_site_icon' );
     262add_action( 'rss2_head', 'rss2_site_icon' );
     263
     264
     265// WP Cron
     266if ( !defined( 'DOING_CRON' ) )
     267        add_action( 'init', 'wp_cron' );
     268
     269// 2 Actions 2 Furious
     270add_action( 'do_feed_rdf',                'do_feed_rdf',                             10, 1 );
     271add_action( 'do_feed_rss',                'do_feed_rss',                             10, 1 );
     272add_action( 'do_feed_rss2',               'do_feed_rss2',                            10, 1 );
     273add_action( 'do_feed_atom',               'do_feed_atom',                            10, 1 );
     274add_action( 'do_pings',                   'do_all_pings',                            10, 1 );
     275add_action( 'do_robots',                  'do_robots'                                      );
     276add_action( 'set_comment_cookies',        'wp_set_comment_cookies',                  10, 2 );
     277add_action( 'sanitize_comment_cookies',   'sanitize_comment_cookies'                       );
     278add_action( 'admin_print_scripts',        'print_emoji_detection_script'                   );
     279add_action( 'admin_print_scripts',        'print_head_scripts',                      20    );
     280add_action( 'admin_print_footer_scripts', '_wp_footer_scripts'                             );
     281add_action( 'admin_print_styles',         'print_emoji_styles'                             );
     282add_action( 'admin_print_styles',         'print_admin_styles',                      20    );
     283add_action( 'init',                       'smilies_init',                             5    );
     284add_action( 'plugins_loaded',             'wp_maybe_load_widgets',                    0    );
     285add_action( 'plugins_loaded',             'wp_maybe_load_embeds',                     0    );
     286add_action( 'shutdown',                   'wp_ob_end_flush_all',                      1    );
     287// Create a revision whenever a post is updated.
     288add_action( 'post_updated',               'wp_save_post_revision',                   10, 1 );
     289add_action( 'publish_post',               '_publish_post_hook',                       5, 1 );
     290add_action( 'transition_post_status',     '_transition_post_status',                  5, 3 );
     291add_action( 'transition_post_status',     '_update_term_count_on_transition_post_status', 10, 3 );
     292add_action( 'comment_form',               'wp_comment_form_unfiltered_html_nonce'          );
     293add_action( 'wp_scheduled_delete',        'wp_scheduled_delete'                            );
     294add_action( 'wp_scheduled_auto_draft_delete', 'wp_delete_auto_drafts'                      );
     295add_action( 'admin_init',                 'send_frame_options_header',               10, 0 );
     296add_action( 'importer_scheduled_cleanup', 'wp_delete_attachment'                           );
     297add_action( 'upgrader_scheduled_cleanup', 'wp_delete_attachment'                           );
     298add_action( 'welcome_panel',              'wp_welcome_panel'                               );
     299
     300// Navigation menu actions
     301add_action( 'delete_post',                '_wp_delete_post_menu_item'         );
     302add_action( 'delete_term',                '_wp_delete_tax_menu_item',   10, 3 );
     303add_action( 'transition_post_status',     '_wp_auto_add_pages_to_menu', 10, 3 );
     304
     305// Post Thumbnail CSS class filtering
     306add_action( 'begin_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_add'    );
     307add_action( 'end_fetch_post_thumbnail_html',   '_wp_post_thumbnail_class_filter_remove' );
     308
     309// Redirect Old Slugs
     310add_action( 'template_redirect',  'wp_old_slug_redirect'              );
     311add_action( 'post_updated',       'wp_check_for_changed_slugs', 12, 3 );
     312add_action( 'attachment_updated', 'wp_check_for_changed_slugs', 12, 3 );
     313
     314// Nonce check for Post Previews
     315add_action( 'init', '_show_post_preview' );
     316
     317// Output JS to reset window.name for previews
     318add_action( 'wp_head', 'wp_post_preview_js', 1 );
     319
     320// Timezone
     321add_filter( 'pre_option_gmt_offset','wp_timezone_override_offset' );
     322
     323// Admin Color Schemes
     324add_action( 'admin_init', 'register_admin_color_schemes', 1);
     325add_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
     326
     327// If the upgrade hasn't run yet, assume link manager is used.
     328add_filter( 'default_option_link_manager_enabled', '__return_true' );
     329
     330// This option no longer exists; tell plugins we always support auto-embedding.
     331add_filter( 'default_option_embed_autourls', '__return_true' );
     332
     333// Default settings for heartbeat
     334add_filter( 'heartbeat_settings', 'wp_heartbeat_settings' );
     335
     336// Check if the user is logged out
     337add_action( 'admin_enqueue_scripts', 'wp_auth_check_load' );
     338add_filter( 'heartbeat_send',        'wp_auth_check' );
     339add_filter( 'heartbeat_nopriv_send', 'wp_auth_check' );
     340
     341// Default authentication filters
     342add_filter( 'authenticate', 'wp_authenticate_username_password',  20, 3 );
     343add_filter( 'authenticate', 'wp_authenticate_spam_check',         99    );
     344add_filter( 'determine_current_user', 'wp_validate_auth_cookie'          );
     345add_filter( 'determine_current_user', 'wp_validate_logged_in_cookie', 20 );
     346
     347// Split term updates.
     348add_action( 'admin_init',        '_wp_check_for_scheduled_split_terms' );
     349add_action( 'split_shared_term', '_wp_check_split_default_terms',  10, 4 );
     350add_action( 'split_shared_term', '_wp_check_split_terms_in_menus', 10, 4 );
     351add_action( 'split_shared_term', '_wp_check_split_nav_menu_terms', 10, 4 );
     352add_action( 'wp_split_shared_term_batch', '_wp_batch_split_terms' );
     353
     354// Email notifications.
     355add_action( 'comment_post', 'wp_new_comment_notify_moderator' );
     356add_action( 'comment_post', 'wp_new_comment_notify_postauthor' );
     357add_action( 'after_password_reset', 'wp_password_change_notification' );
     358add_action( 'register_new_user',      'wp_send_new_user_notifications' );
     359add_action( 'edit_user_created_user', 'wp_send_new_user_notifications' );
     360
     361// REST API actions.
     362add_action( 'init',          'rest_api_init' );
     363add_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );
     364add_action( 'parse_request', 'rest_api_loaded' );
     365
     366/**
     367 * Filters formerly mixed into wp-includes
     368 */
     369// Theme
     370add_action( 'wp_loaded', '_custom_header_background_just_in_time' );
     371add_action( 'plugins_loaded', '_wp_customize_include' );
     372add_action( 'admin_enqueue_scripts', '_wp_customize_loader_settings' );
     373add_action( 'delete_attachment', '_delete_attachment_theme_mod' );
     374
     375// Calendar widget cache
     376add_action( 'save_post', 'delete_get_calendar_cache' );
     377add_action( 'delete_post', 'delete_get_calendar_cache' );
     378add_action( 'update_option_start_of_week', 'delete_get_calendar_cache' );
     379add_action( 'update_option_gmt_offset', 'delete_get_calendar_cache' );
     380
     381// Author
     382add_action( 'transition_post_status', '__clear_multi_author_cache' );
     383
     384// Post
     385add_action( 'init', 'create_initial_post_types', 0 ); // highest priority
     386add_action( 'admin_menu', '_add_post_type_submenus' );
     387add_action( 'before_delete_post', '_reset_front_page_settings_for_post' );
     388add_action( 'wp_trash_post',      '_reset_front_page_settings_for_post' );
     389
     390// Post Formats
     391add_filter( 'request', '_post_format_request' );
     392add_filter( 'term_link', '_post_format_link', 10, 3 );
     393add_filter( 'get_post_format', '_post_format_get_term' );
     394add_filter( 'get_terms', '_post_format_get_terms', 10, 3 );
     395add_filter( 'wp_get_object_terms', '_post_format_wp_get_object_terms' );
     396
     397// KSES
     398add_action( 'init', 'kses_init' );
     399add_action( 'set_current_user', 'kses_init' );
     400
     401// Script Loader
     402add_action( 'wp_default_scripts', 'wp_default_scripts' );
     403add_filter( 'wp_print_scripts', 'wp_just_in_time_script_localization' );
     404add_filter( 'print_scripts_array', 'wp_prototype_before_jquery' );
     405
     406add_action( 'wp_default_styles', 'wp_default_styles' );
     407add_filter( 'style_loader_src', 'wp_style_loader_src', 10, 2 );
     408
     409// Taxonomy
     410add_action( 'init', 'create_initial_taxonomies', 0 ); // highest priority
     411
     412// Canonical
     413add_action( 'template_redirect', 'redirect_canonical' );
     414add_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );
     415
     416// Shortcodes
     417add_filter( 'the_content', 'do_shortcode', 11 ); // AFTER wpautop()
     418
     419// Media
     420add_action( 'wp_playlist_scripts', 'wp_playlist_scripts' );
     421add_action( 'customize_controls_enqueue_scripts', 'wp_plupload_default_settings' );
     422
     423// Nav menu
     424add_filter( 'nav_menu_item_id', '_nav_menu_item_id_use_once', 10, 2 );
     425
     426// Widgets
     427add_action( 'init', 'wp_widgets_init', 1 );
     428
     429// Admin Bar
     430// Don't remove. Wrong way to disable.
     431add_action( 'template_redirect', '_wp_admin_bar_init', 0 );
     432add_action( 'admin_init', '_wp_admin_bar_init' );
     433add_action( 'before_signup_header', '_wp_admin_bar_init' );
     434add_action( 'activate_header', '_wp_admin_bar_init' );
     435add_action( 'wp_footer', 'wp_admin_bar_render', 1000 );
     436add_action( 'in_admin_header', 'wp_admin_bar_render', 0 );
     437
     438// Former admin filters that can also be hooked on the front end
     439add_action( 'media_buttons', 'media_buttons' );
     440add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 );
     441add_filter( 'media_send_to_editor', 'image_media_send_to_editor', 10, 3 );
     442
     443// Embeds
     444add_action( 'rest_api_init',          'wp_oembed_register_route'              );
     445add_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 );
     446
     447add_action( 'wp_head',                'wp_oembed_add_discovery_links'         );
     448add_action( 'wp_head',                'wp_oembed_add_host_js'                 );
     449
     450add_action( 'embed_head',             'print_emoji_detection_script'          );
     451add_action( 'embed_head',             'print_emoji_styles'                    );
     452add_action( 'embed_head',             'print_embed_styles'                    );
     453add_action( 'embed_head',             'wp_print_head_scripts',          20    );
     454add_action( 'embed_head',             'wp_print_styles',                20    );
     455add_action( 'embed_head',             'wp_no_robots'                          );
     456add_action( 'embed_head',             'rel_canonical'                         );
     457add_action( 'embed_head',             'locale_stylesheet'                     );
     458
     459add_action( 'embed_footer',           'print_embed_scripts'                   );
     460add_action( 'embed_footer',           'wp_print_footer_scripts',        20    );
     461
     462add_filter( 'excerpt_more',           'wp_embed_excerpt_more',          20    );
     463add_filter( 'the_excerpt_embed',      'wptexturize'                           );
     464add_filter( 'the_excerpt_embed',      'convert_chars'                         );
     465add_filter( 'the_excerpt_embed',      'wpautop'                               );
     466add_filter( 'the_excerpt_embed',      'shortcode_unautop'                     );
     467add_filter( 'the_excerpt_embed',      'wp_embed_excerpt_attachment'           );
     468
     469add_filter( 'oembed_dataparse',       'wp_filter_oembed_result',        10, 3 );
     470add_filter( 'oembed_response_data',   'get_oembed_response_data_rich',  10, 4 );
     471
     472unset( $filter, $action );
  • src/wp-includes/embed-functions.php

    diff --git a/src/wp-includes/embed-functions.php b/src/wp-includes/embed-functions.php
    index 360399e..2f430b5 100644
    a b function wp_oembed_add_host_js() { 
    372372        wp_enqueue_script( 'wp-embed' );
    373373}
    374374
    375 
    376375/**
    377376 * Retrieves the URL to embed a specific post in an iframe.
    378377 *
    function wp_embed_excerpt_attachment( $content ) { 
    864863}
    865864
    866865/**
     866 * Enqueue embed iframe default CSS and JS & fire do_action('enqueue_embed_scripts')
     867 *
     868 * Enqueue PNG fallback CSS for embed iframe for legacy versions of IE.
     869 *
     870 * Allows plugins to queue scripts for the embed iframe end using wp_enqueue_script().
     871 * Runs first in oembed_head().
     872 *
     873 * @since 4.4.0
     874 */
     875function enqueue_embed_scripts() {
     876        wp_enqueue_style( 'open-sans' );
     877        wp_enqueue_style( 'wp-embed-template-ie' );
     878
     879        /**
     880         * Fires when scripts and styles are enqueued for the embed iframe.
     881         *
     882         * @since 4.4.0
     883         */
     884        do_action( 'enqueue_embed_scripts' );
     885}
     886
     887/**
    867888 * Prints the CSS in the embed iframe header.
    868889 *
    869890 * @since 4.4.0
  • src/wp-includes/embed-template.php

    diff --git a/src/wp-includes/embed-template.php b/src/wp-includes/embed-template.php
    index a7f948f..120ae3b 100644
    a b if ( ! headers_sent() ) { 
    1414        header( 'X-WP-embed: true' );
    1515}
    1616
    17 wp_enqueue_style( 'open-sans' );
    18 
    1917?>
    2018<!DOCTYPE html>
    21 <html <?php language_attributes(); ?>>
     19<html <?php language_attributes(); ?> class="no-js">
    2220<head>
    2321        <title><?php echo wp_get_document_title(); ?></title>
    2422        <meta http-equiv="X-UA-Compatible" content="IE=edge">
  • src/wp-includes/js/wp-embed-template.js

    diff --git a/src/wp-includes/js/wp-embed-template.js b/src/wp-includes/js/wp-embed-template.js
    index 847ebcf..b1dc73a 100644
    a b  
    22        'use strict';
    33
    44        var secret = window.location.hash.replace( /.*secret=([\d\w]{10}).*/, '$1' ),
     5                supportedBrowser = ( document.querySelector && window.addEventListener ),
     6                loaded = false,
    57                resizing;
    68
    79        function sendEmbedMessage( message, value ) {
     
    1315        }
    1416
    1517        function onLoad() {
     18                if ( loaded ) {
     19                        return;
     20                }
     21                loaded = true;
     22
    1623                var share_dialog = document.querySelector( '.wp-embed-share-dialog' ),
    1724                        share_dialog_open = document.querySelector( '.wp-embed-share-dialog-open' ),
    1825                        share_dialog_close = document.querySelector( '.wp-embed-share-dialog-close' ),
     
    141148                }
    142149        }
    143150
    144         document.addEventListener( 'DOMContentLoaded', onLoad, false );
    145 
    146151        /**
    147152         * Iframe resize handler.
    148153         */
     
    158163                }, 100 );
    159164        }
    160165
    161         window.addEventListener( 'resize', onResize, false );
     166        if ( supportedBrowser ) {
     167                document.documentElement.className = document.documentElement.className.replace( /\bno-js\b/, '' ) + ' js';
     168                document.addEventListener( 'DOMContentLoaded', onLoad, false );
     169                window.addEventListener( 'load', onLoad, false );
     170                window.addEventListener( 'resize', onResize, false );
     171        }
    162172})( window, document );
  • src/wp-includes/js/wp-embed.js

    diff --git a/src/wp-includes/js/wp-embed.js b/src/wp-includes/js/wp-embed.js
    index 3829d0d..db1fe5b 100644
    a b  
    11(function ( window, document ) {
    22        'use strict';
    33
     4        var supportedBrowser = ( document.querySelector && window.addEventListener ),
     5                loaded = false;
     6
    47        window.wp = window.wp || {};
    58
    69        if ( !! window.wp.receiveEmbedMessage ) {
     
    5457                }
    5558        };
    5659
    57         window.addEventListener( 'message', window.wp.receiveEmbedMessage, false );
    58 
    5960        function onLoad() {
     61                if ( loaded ) {
     62                        return;
     63                }
     64                loaded = true;
     65
    6066                var isIE10 = -1 !== navigator.appVersion.indexOf( 'MSIE 10' ),
    6167                        isIE11 = !!navigator.userAgent.match( /Trident.*rv\:11\./ ),
    6268                        iframes, iframeClone, i;
     
    6874                        for ( i = 0; i < iframes.length; i++ ) {
    6975                                iframeClone = iframes[ i ].cloneNode( true );
    7076                                iframeClone.removeAttribute( 'security' );
    71                                 iframes[ i ].parentNode.insertBefore( iframeClone, iframes[ i ].nextSibling );
    72                                 iframes[ i ].parentNode.removeChild( iframes[ i ] );
     77                                iframes[ i ].parentNode.replaceChild( iframeClone, iframes[ i ] );
    7378                        }
    7479                }
    7580        }
    7681
    77         document.addEventListener( 'DOMContentLoaded', onLoad, false );
     82        if ( supportedBrowser ) {
     83                window.addEventListener( 'message', window.wp.receiveEmbedMessage, false );
     84                document.addEventListener( 'DOMContentLoaded', onLoad, false );
     85                window.addEventListener( 'load', onLoad, false );
     86        }
    7887})( window, document );
  • src/wp-includes/script-loader.php

    diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php
    index 72a7575..1c7efbb 100644
    a b function wp_default_styles( &$styles ) { 
    727727        $styles->add( 'open-sans', $open_sans_font_url );
    728728
    729729        // Includes CSS
    730         $styles->add( 'admin-bar',         "/wp-includes/css/admin-bar$suffix.css", array( 'open-sans', 'dashicons' ) );
    731         $styles->add( 'wp-auth-check',     "/wp-includes/css/wp-auth-check$suffix.css", array( 'dashicons' ) );
    732         $styles->add( 'editor-buttons',    "/wp-includes/css/editor$suffix.css", array( 'dashicons' ) );
    733         $styles->add( 'media-views',       "/wp-includes/css/media-views$suffix.css", array( 'buttons', 'dashicons', 'wp-mediaelement' ) );
    734         $styles->add( 'wp-pointer',        "/wp-includes/css/wp-pointer$suffix.css", array( 'dashicons' ) );
    735         $styles->add( 'customize-preview', "/wp-includes/css/customize-preview$suffix.css" );
     730        $styles->add( 'admin-bar',            "/wp-includes/css/admin-bar$suffix.css", array( 'open-sans', 'dashicons' ) );
     731        $styles->add( 'wp-auth-check',        "/wp-includes/css/wp-auth-check$suffix.css", array( 'dashicons' ) );
     732        $styles->add( 'editor-buttons',       "/wp-includes/css/editor$suffix.css", array( 'dashicons' ) );
     733        $styles->add( 'media-views',          "/wp-includes/css/media-views$suffix.css", array( 'buttons', 'dashicons', 'wp-mediaelement' ) );
     734        $styles->add( 'wp-pointer',           "/wp-includes/css/wp-pointer$suffix.css", array( 'dashicons' ) );
     735        $styles->add( 'customize-preview',    "/wp-includes/css/customize-preview$suffix.css" );
     736        $styles->add( 'wp-embed-template-ie', "/wp-includes/css/wp-embed-template-ie$suffix.css" );
     737        $styles->add_data( 'wp-embed-template-ie', 'conditional', 'lte IE 8' );
    736738
    737739        // External libraries and friends
    738740        $styles->add( 'imgareaselect',       '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.8' );