2006-05-22 19:16:05 +02:00
< ? php
2008-08-30 21:51:29 +02:00
/**
* WordPress scripts and styles default loader .
*
2009-02-23 09:47:49 +01:00
* Several constants are used to manage the loading , concatenating and compression of scripts and CSS :
2010-02-17 21:25:51 +01:00
* define ( 'SCRIPT_DEBUG' , true ); loads the development ( non - minified ) versions of all scripts and CSS , and disables compression and concatenation ,
2009-11-20 18:44:46 +01:00
* define ( 'CONCATENATE_SCRIPTS' , false ); disables compression and concatenation of scripts and CSS ,
2009-02-23 09:47:49 +01:00
* define ( 'COMPRESS_SCRIPTS' , false ); disables compression of scripts ,
* define ( 'COMPRESS_CSS' , false ); disables compression of CSS ,
* define ( 'ENFORCE_GZIP' , true ); forces gzip for compression ( default is deflate ) .
2009-03-18 03:43:45 +01:00
*
2009-02-23 09:47:49 +01:00
* The globals $concatenate_scripts , $compress_scripts and $compress_css can be set by plugins
* to temporarily override the above settings . Also a compression test is run once and the result is saved
* as option 'can_compress_scripts' ( 0 / 1 ) . The test will run again if that option is deleted .
2009-03-18 03:43:45 +01:00
*
2008-08-30 21:51:29 +02:00
* @ package WordPress
*/
2016-08-31 18:31:29 +02:00
/** WordPress Dependency Class */
2020-02-06 07:33:11 +01:00
require ABSPATH . WPINC . '/class-wp-dependency.php' ;
2016-08-31 18:31:29 +02:00
/** WordPress Dependencies Class */
Coding Standards: Rename WordPress Dependencies API class files.
The current coding standards note that the name of the class files should be based on the class name with `class-` prepended, and the underscores replaced by hyphens (see the [https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/#naming-conventions Naming Conventions] section in the handbook), except for the three legacy files: `class.wp-dependencies.php`, `class.wp-scripts.php`, `class.wp-styles.php`.
To bring more consistency to the codebase and make it easier to implement autoloading in the future, this commit renames those three legacy files to conform to the coding standards:
* `wp-includes/class.wp-dependencies.php` → `wp-includes/class-wp-dependencies.php`
* `wp-includes/class.wp-scripts.php` → `wp-includes/class-wp-scripts.php`
* `wp-includes/class.wp-styles.php` → `wp-includes/class-wp-styles.php`
Includes:
* Loading the new files from the old ones, for anyone that may have been including the files directly.
* Replacing references to the old filenames with the new filenames.
Follow-up to [7970], [45654], [45662], [45663], [45678], [47197], [52026], [53749].
Props afragen, schlessera, swissspidy, dingo_d, hellofromTonya, SergeyBiryukov.
Fixes #37861. See #55647.
Built from https://develop.svn.wordpress.org/trunk@54254
git-svn-id: http://core.svn.wordpress.org/trunk@53813 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-20 16:17:12 +02:00
require ABSPATH . WPINC . '/class-wp-dependencies.php' ;
2016-08-31 18:31:29 +02:00
/** WordPress Scripts Class */
Coding Standards: Rename WordPress Dependencies API class files.
The current coding standards note that the name of the class files should be based on the class name with `class-` prepended, and the underscores replaced by hyphens (see the [https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/#naming-conventions Naming Conventions] section in the handbook), except for the three legacy files: `class.wp-dependencies.php`, `class.wp-scripts.php`, `class.wp-styles.php`.
To bring more consistency to the codebase and make it easier to implement autoloading in the future, this commit renames those three legacy files to conform to the coding standards:
* `wp-includes/class.wp-dependencies.php` → `wp-includes/class-wp-dependencies.php`
* `wp-includes/class.wp-scripts.php` → `wp-includes/class-wp-scripts.php`
* `wp-includes/class.wp-styles.php` → `wp-includes/class-wp-styles.php`
Includes:
* Loading the new files from the old ones, for anyone that may have been including the files directly.
* Replacing references to the old filenames with the new filenames.
Follow-up to [7970], [45654], [45662], [45663], [45678], [47197], [52026], [53749].
Props afragen, schlessera, swissspidy, dingo_d, hellofromTonya, SergeyBiryukov.
Fixes #37861. See #55647.
Built from https://develop.svn.wordpress.org/trunk@54254
git-svn-id: http://core.svn.wordpress.org/trunk@53813 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-20 16:17:12 +02:00
require ABSPATH . WPINC . '/class-wp-scripts.php' ;
2016-08-31 18:31:29 +02:00
2016-02-27 21:34:29 +01:00
/** WordPress Scripts Functions */
2020-02-06 07:33:11 +01:00
require ABSPATH . WPINC . '/functions.wp-scripts.php' ;
2008-08-30 21:51:29 +02:00
2016-08-31 18:31:29 +02:00
/** WordPress Styles Class */
Coding Standards: Rename WordPress Dependencies API class files.
The current coding standards note that the name of the class files should be based on the class name with `class-` prepended, and the underscores replaced by hyphens (see the [https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/#naming-conventions Naming Conventions] section in the handbook), except for the three legacy files: `class.wp-dependencies.php`, `class.wp-scripts.php`, `class.wp-styles.php`.
To bring more consistency to the codebase and make it easier to implement autoloading in the future, this commit renames those three legacy files to conform to the coding standards:
* `wp-includes/class.wp-dependencies.php` → `wp-includes/class-wp-dependencies.php`
* `wp-includes/class.wp-scripts.php` → `wp-includes/class-wp-scripts.php`
* `wp-includes/class.wp-styles.php` → `wp-includes/class-wp-styles.php`
Includes:
* Loading the new files from the old ones, for anyone that may have been including the files directly.
* Replacing references to the old filenames with the new filenames.
Follow-up to [7970], [45654], [45662], [45663], [45678], [47197], [52026], [53749].
Props afragen, schlessera, swissspidy, dingo_d, hellofromTonya, SergeyBiryukov.
Fixes #37861. See #55647.
Built from https://develop.svn.wordpress.org/trunk@54254
git-svn-id: http://core.svn.wordpress.org/trunk@53813 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-20 16:17:12 +02:00
require ABSPATH . WPINC . '/class-wp-styles.php' ;
2016-08-31 18:31:29 +02:00
2016-02-27 21:34:29 +01:00
/** WordPress Styles Functions */
2020-02-06 07:33:11 +01:00
require ABSPATH . WPINC . '/functions.wp-styles.php' ;
2008-05-21 07:56:04 +02:00
2018-12-13 17:50:36 +01:00
/**
* Registers TinyMCE scripts .
*
* @ since 5.0 . 0
*
2021-10-27 20:21:58 +02:00
* @ global string $tinymce_version
* @ global bool $concatenate_scripts
* @ global bool $compress_scripts
*
2020-07-23 02:48:06 +02:00
* @ param WP_Scripts $scripts WP_Scripts object .
* @ param bool $force_uncompressed Whether to forcibly prevent gzip compression . Default false .
2018-12-13 17:50:36 +01:00
*/
2020-02-25 01:59:06 +01:00
function wp_register_tinymce_scripts ( $scripts , $force_uncompressed = false ) {
2018-12-13 17:50:36 +01:00
global $tinymce_version , $concatenate_scripts , $compress_scripts ;
2021-10-27 20:21:58 +02:00
2018-12-17 04:15:20 +01:00
$suffix = wp_scripts_get_suffix ();
$dev_suffix = wp_scripts_get_suffix ( 'dev' );
2018-12-13 18:27:38 +01:00
script_concat_settings ();
2018-12-13 17:50:36 +01:00
$compressed = $compress_scripts && $concatenate_scripts && isset ( $_SERVER [ 'HTTP_ACCEPT_ENCODING' ] )
2019-05-28 05:32:52 +02:00
&& false !== stripos ( $_SERVER [ 'HTTP_ACCEPT_ENCODING' ], 'gzip' ) && ! $force_uncompressed ;
2018-12-13 18:27:38 +01:00
Docs: Replace multiple single line comments with multi-line comments.
This changeset updates various comments as per WordPress PHP Inline Documentation Standards.
See https://developer.wordpress.org/coding-standards/inline-documentation-standards/php/#5-inline-comments.
Follow-up to [56174], [56175], [56176], [56177], [56178], [56179], [56180], [56191], [56192], [56193].
Props costdev, audrasjb.
See #58459.
Built from https://develop.svn.wordpress.org/trunk@56194
git-svn-id: http://core.svn.wordpress.org/trunk@55706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-11 01:11:22 +02:00
/*
* Load tinymce . js when running from / src , otherwise load wp - tinymce . js . gz ( in production )
* or tinymce . min . js ( when SCRIPT_DEBUG is true ) .
*/
2018-12-13 17:50:36 +01:00
if ( $compressed ) {
2019-01-18 20:51:53 +01:00
$scripts -> add ( 'wp-tinymce' , includes_url ( 'js/tinymce/' ) . 'wp-tinymce.js' , array (), $tinymce_version );
2018-12-13 17:50:36 +01:00
} else {
2018-12-17 04:15:20 +01:00
$scripts -> add ( 'wp-tinymce-root' , includes_url ( 'js/tinymce/' ) . " tinymce $dev_suffix .js " , array (), $tinymce_version );
$scripts -> add ( 'wp-tinymce' , includes_url ( 'js/tinymce/' ) . " plugins/compat3x/plugin $dev_suffix .js " , array ( 'wp-tinymce-root' ), $tinymce_version );
2018-12-13 17:50:36 +01:00
}
2018-12-19 04:26:37 +01:00
$scripts -> add ( 'wp-tinymce-lists' , includes_url ( " js/tinymce/plugins/lists/plugin $suffix .js " ), array ( 'wp-tinymce' ), $tinymce_version );
2018-12-13 17:50:36 +01:00
}
/**
* Registers all the WordPress vendor scripts that are in the standardized
* `js/dist/vendor/` location .
*
* For the order of `$scripts->add` see `wp_default_scripts` .
*
* @ since 5.0 . 0
*
2021-10-27 20:21:58 +02:00
* @ global WP_Locale $wp_locale WordPress date and time locale object .
*
2018-12-13 17:50:36 +01:00
* @ param WP_Scripts $scripts WP_Scripts object .
*/
2020-02-25 01:59:06 +01:00
function wp_default_packages_vendor ( $scripts ) {
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
global $wp_locale ;
2019-01-04 21:27:49 +01:00
$suffix = wp_scripts_get_suffix ();
2018-12-13 18:27:38 +01:00
2018-12-13 17:50:36 +01:00
$vendor_scripts = array (
2024-04-10 16:42:17 +02:00
'react' ,
Coding Standards: Apply changes after running `composer format`.
This applies several formatting related changes made while running `composer format`.
Follow up to [55720], [58171], [58271], [58282], [58283], [58292], [58299], [58303], [58332].
See #51857, #60719, #60895, #61021, #61118, #61228, #61276, #61324.
Built from https://develop.svn.wordpress.org/trunk@58408
git-svn-id: http://core.svn.wordpress.org/trunk@57857 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-06-13 17:06:07 +02:00
'react-dom' => array ( 'react' ),
2024-05-31 20:56:14 +02:00
'react-jsx-runtime' => array ( 'react' ),
2021-06-23 02:06:13 +02:00
'regenerator-runtime' ,
2018-12-13 17:50:36 +01:00
'moment' ,
'lodash' ,
'wp-polyfill-fetch' ,
'wp-polyfill-formdata' ,
2024-01-31 09:31:29 +01:00
'wp-polyfill-importmap' ,
2018-12-13 17:50:36 +01:00
'wp-polyfill-node-contains' ,
2020-02-10 16:17:07 +01:00
'wp-polyfill-url' ,
'wp-polyfill-dom-rect' ,
2018-12-13 17:50:36 +01:00
'wp-polyfill-element-closest' ,
2021-01-28 03:04:13 +01:00
'wp-polyfill-object-fit' ,
2023-01-18 12:16:33 +01:00
'wp-polyfill-inert' ,
2024-04-10 16:42:17 +02:00
'wp-polyfill' ,
2018-12-13 17:50:36 +01:00
);
2018-12-17 19:19:50 +01:00
$vendor_scripts_versions = array (
2024-05-27 23:22:10 +02:00
'react' => '18.3.1' ,
'react-dom' => '18.3.1' ,
2024-05-31 20:56:14 +02:00
'react-jsx-runtime' => '18.3.1' ,
2023-09-28 10:35:23 +02:00
'regenerator-runtime' => '0.14.0' ,
2022-07-19 21:43:25 +02:00
'moment' => '2.29.4' ,
2023-12-13 18:50:31 +01:00
'lodash' => '4.17.21' ,
2023-08-11 16:44:18 +02:00
'wp-polyfill-fetch' => '3.6.17' ,
2022-04-12 19:35:27 +02:00
'wp-polyfill-formdata' => '4.0.10' ,
2023-09-21 14:28:33 +02:00
'wp-polyfill-node-contains' => '4.8.0' ,
2020-03-03 17:55:07 +01:00
'wp-polyfill-url' => '3.6.4' ,
2023-09-21 14:28:33 +02:00
'wp-polyfill-dom-rect' => '4.8.0' ,
2023-02-07 17:48:31 +01:00
'wp-polyfill-element-closest' => '3.0.2' ,
2021-03-30 19:57:05 +02:00
'wp-polyfill-object-fit' => '2.3.5' ,
2023-01-18 12:16:33 +01:00
'wp-polyfill-inert' => '3.1.2' ,
2021-06-23 02:06:13 +02:00
'wp-polyfill' => '3.15.0' ,
2024-01-31 09:31:29 +01:00
'wp-polyfill-importmap' => '1.8.2' ,
2018-12-17 19:19:50 +01:00
);
2018-12-13 17:50:36 +01:00
foreach ( $vendor_scripts as $handle => $dependencies ) {
if ( is_string ( $dependencies ) ) {
$handle = $dependencies ;
$dependencies = array ();
}
2019-01-04 21:27:49 +01:00
$path = " /wp-includes/js/dist/vendor/ $handle $suffix .js " ;
2018-12-17 19:19:50 +01:00
$version = $vendor_scripts_versions [ $handle ];
2018-12-13 17:50:36 +01:00
2018-12-17 20:34:52 +01:00
$scripts -> add ( $handle , $path , $dependencies , $version , 1 );
2018-12-13 17:50:36 +01:00
}
did_action ( 'init' ) && $scripts -> add_inline_script ( 'lodash' , 'window.lodash = _.noConflict();' );
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
did_action ( 'init' ) && $scripts -> add_inline_script (
'moment' ,
sprintf (
2020-06-17 19:40:27 +02:00
" moment.updateLocale( '%s', %s ); " ,
2024-06-03 00:35:10 +02:00
esc_js ( get_user_locale () ),
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
wp_json_encode (
array (
'months' => array_values ( $wp_locale -> month ),
'monthsShort' => array_values ( $wp_locale -> month_abbrev ),
'weekdays' => array_values ( $wp_locale -> weekday ),
'weekdaysShort' => array_values ( $wp_locale -> weekday_abbrev ),
'week' => array (
'dow' => ( int ) get_option ( 'start_of_week' , 0 ),
),
'longDateFormat' => array (
2021-06-15 18:16:57 +02:00
'LT' => get_option ( 'time_format' , __ ( 'g:i a' ) ),
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
'LTS' => null ,
'L' => null ,
2021-06-15 18:16:57 +02:00
'LL' => get_option ( 'date_format' , __ ( 'F j, Y' ) ),
'LLL' => __ ( 'F j, Y g:i a' ),
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
'LLLL' => null ,
),
)
)
),
'after'
);
2018-12-13 17:50:36 +01:00
}
/**
* Returns contents of an inline script used in appending polyfill scripts for
* browsers which fail the provided tests . The provided array is a mapping from
* a condition to verify feature support to its polyfill script handle .
*
* @ since 5.0 . 0
*
* @ param WP_Scripts $scripts WP_Scripts object .
2022-09-20 22:32:09 +02:00
* @ param string [] $tests Features to detect .
2018-12-13 17:50:36 +01:00
* @ return string Conditional polyfill inline script .
*/
2020-02-25 01:59:06 +01:00
function wp_get_script_polyfill ( $scripts , $tests ) {
2018-12-13 17:50:36 +01:00
$polyfill = '' ;
foreach ( $tests as $test => $handle ) {
if ( ! array_key_exists ( $handle , $scripts -> registered ) ) {
continue ;
}
2018-12-18 05:05:48 +01:00
$src = $scripts -> registered [ $handle ] -> src ;
$ver = $scripts -> registered [ $handle ] -> ver ;
Code Modernization: Replace usage of `strpos()` with `str_starts_with()`.
`str_starts_with()` was introduced in PHP 8.0 to perform a case-sensitive check indicating if the string to search in (haystack) begins with the given substring (needle).
WordPress core includes a polyfill for `str_starts_with()` on PHP < 8.0 as of WordPress 5.9.
This commit replaces `0 === strpos( ... )` with `str_starts_with()` in core files, making the code more readable and consistent, as well as improving performance.
While `strpos()` is slightly faster than the polyfill on PHP < 8.0, `str_starts_with()` is noticeably faster on PHP 8.0+, as it is optimized to avoid unnecessarily searching along the whole haystack if it does not find the needle.
Follow-up to [52039], [52040], [52326].
Props spacedmonkey, costdev, sabernhardt, mukesh27, desrosj, jorbin, TobiasBg, ayeshrajans, lgadzhev, SergeyBiryukov.
Fixes #58012.
Built from https://develop.svn.wordpress.org/trunk@55703
git-svn-id: http://core.svn.wordpress.org/trunk@55215 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-05-02 17:45:22 +02:00
if ( ! preg_match ( '|^(https?:)?//|' , $src ) && ! ( $scripts -> content_url && str_starts_with ( $src , $scripts -> content_url ) ) ) {
2018-12-18 05:05:48 +01:00
$src = $scripts -> base_url . $src ;
}
if ( ! empty ( $ver ) ) {
$src = add_query_arg ( 'ver' , $ver , $src );
}
Coding Standards: Rename WordPress Dependencies API class files.
The current coding standards note that the name of the class files should be based on the class name with `class-` prepended, and the underscores replaced by hyphens (see the [https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/#naming-conventions Naming Conventions] section in the handbook), except for the three legacy files: `class.wp-dependencies.php`, `class.wp-scripts.php`, `class.wp-styles.php`.
To bring more consistency to the codebase and make it easier to implement autoloading in the future, this commit renames those three legacy files to conform to the coding standards:
* `wp-includes/class.wp-dependencies.php` → `wp-includes/class-wp-dependencies.php`
* `wp-includes/class.wp-scripts.php` → `wp-includes/class-wp-scripts.php`
* `wp-includes/class.wp-styles.php` → `wp-includes/class-wp-styles.php`
Includes:
* Loading the new files from the old ones, for anyone that may have been including the files directly.
* Replacing references to the old filenames with the new filenames.
Follow-up to [7970], [45654], [45662], [45663], [45678], [47197], [52026], [53749].
Props afragen, schlessera, swissspidy, dingo_d, hellofromTonya, SergeyBiryukov.
Fixes #37861. See #55647.
Built from https://develop.svn.wordpress.org/trunk@54254
git-svn-id: http://core.svn.wordpress.org/trunk@53813 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-20 16:17:12 +02:00
/** This filter is documented in wp-includes/class-wp-scripts.php */
2018-12-18 05:05:48 +01:00
$src = esc_url ( apply_filters ( 'script_loader_src' , $src , $handle ) );
if ( ! $src ) {
continue ;
}
2018-12-13 17:50:36 +01:00
$polyfill .= (
// Test presence of feature...
'( ' . $test . ' ) || ' .
2020-01-29 01:45:18 +01:00
/*
* ... appending polyfill on any failures . Cautious viewers may balk
* at the `document.write` . Its caveat of synchronous mid - stream
* blocking write is exactly the behavior we need though .
*/
2018-12-13 17:50:36 +01:00
'document.write( \'<script src="' .
2018-12-18 05:05:48 +01:00
$src .
2018-12-13 17:50:36 +01:00
'"></scr\' + \'ipt>\' );'
);
}
return $polyfill ;
}
2022-04-11 18:10:22 +02:00
/**
* Registers development scripts that integrate with `@wordpress/scripts` .
*
* @ see https :// github . com / WordPress / gutenberg / tree / trunk / packages / scripts #start
*
* @ since 6.0 . 0
*
* @ param WP_Scripts $scripts WP_Scripts object .
*/
function wp_register_development_scripts ( $scripts ) {
if (
! defined ( 'SCRIPT_DEBUG' ) || ! SCRIPT_DEBUG
|| empty ( $scripts -> registered [ 'react' ] )
2022-09-23 10:27:12 +02:00
|| defined ( 'WP_RUN_CORE_TESTS' )
2022-04-11 18:10:22 +02:00
) {
return ;
}
$development_scripts = array (
'react-refresh-entry' ,
'react-refresh-runtime' ,
);
foreach ( $development_scripts as $script_name ) {
$assets = include ABSPATH . WPINC . '/assets/script-loader-' . $script_name . '.php' ;
if ( ! is_array ( $assets ) ) {
return ;
}
$scripts -> add (
'wp-' . $script_name ,
'/wp-includes/js/dist/development/' . $script_name . '.js' ,
$assets [ 'dependencies' ],
$assets [ 'version' ]
);
}
// See https://github.com/pmmmwh/react-refresh-webpack-plugin/blob/main/docs/TROUBLESHOOTING.md#externalising-react.
$scripts -> registered [ 'react' ] -> deps [] = 'wp-react-refresh-entry' ;
}
2018-12-13 17:50:36 +01:00
/**
2018-12-13 18:27:38 +01:00
* Registers all the WordPress packages scripts that are in the standardized
2018-12-13 17:50:36 +01:00
* `js/dist/` location .
*
* For the order of `$scripts->add` see `wp_default_scripts` .
*
* @ since 5.0 . 0
*
* @ param WP_Scripts $scripts WP_Scripts object .
*/
2020-02-25 01:59:06 +01:00
function wp_default_packages_scripts ( $scripts ) {
2022-09-23 10:27:12 +02:00
$suffix = defined ( 'WP_RUN_CORE_TESTS' ) ? '.min' : wp_scripts_get_suffix ();
2021-08-05 15:11:56 +02:00
/*
* Expects multidimensional array like :
*
* 'a11y.js' => array ( 'dependencies' => array ( ... ), 'version' => '...' ),
* 'annotations.js' => array ( 'dependencies' => array ( ... ), 'version' => '...' ),
* 'api-fetch.js' => array ( ...
*/
2022-09-23 10:27:12 +02:00
$assets = include ABSPATH . WPINC . " /assets/script-loader-packages { $suffix } .php " ;
2020-02-24 22:22:08 +01:00
2022-09-23 10:27:12 +02:00
foreach ( $assets as $file_name => $package_data ) {
$basename = str_replace ( $suffix . '.js' , '' , basename ( $file_name ) );
2020-02-24 22:22:08 +01:00
$handle = 'wp-' . $basename ;
$path = " /wp-includes/js/dist/ { $basename } { $suffix } .js " ;
if ( ! empty ( $package_data [ 'dependencies' ] ) ) {
$dependencies = $package_data [ 'dependencies' ];
} else {
$dependencies = array ();
2020-01-07 16:28:05 +01:00
}
2020-01-03 14:17:24 +01:00
// Add dependencies that cannot be detected and generated by build tools.
switch ( $handle ) {
case 'wp-block-library' :
array_push ( $dependencies , 'editor' );
break ;
case 'wp-edit-post' :
array_push ( $dependencies , 'media-models' , 'media-views' , 'postbox' , 'wp-dom-ready' );
break ;
Editor: Persist preferences in user meta.
Adds a new feature to persist editor UI preferences between page loads and browsers.
* Adds a new preferences persistence API.
* Saves editor preferences in user meta instead of in browser's local storage.
Why?
Due to the transient nature of browser storage, this persistence is not as sticky as it is expected to be, including: switching browsers (unique storage between browsers), or using private browsing tabs (storage cleared between sessions), or the same user across a network of sites (storage unique by domain).
This is a backport from Gutenberg.[https://github.com/WordPress/gutenberg/pull/39795 See WordPress/gutenberg PR 39795].
Props talldanwp, youknowriad, noisysocks, mamaduka, costdev, ironprogrammer, hellofromTonya.
See #56467.
Built from https://develop.svn.wordpress.org/trunk@54182
git-svn-id: http://core.svn.wordpress.org/trunk@53741 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-15 18:45:40 +02:00
case 'wp-preferences' :
array_push ( $dependencies , 'wp-preferences-persistence' );
break ;
2020-01-03 14:17:24 +01:00
}
2018-12-13 17:50:36 +01:00
2020-02-24 22:22:08 +01:00
$scripts -> add ( $handle , $path , $dependencies , $package_data [ 'version' ], 1 );
2018-12-17 04:17:04 +01:00
2020-02-24 22:22:08 +01:00
if ( in_array ( 'wp-i18n' , $dependencies , true ) ) {
2019-01-04 22:12:50 +01:00
$scripts -> set_translations ( $handle );
2018-12-17 04:17:04 +01:00
}
2021-02-09 00:51:10 +01:00
2021-02-09 13:34:06 +01:00
/*
* Manually set the text direction localization after wp - i18n is printed .
* This ensures that wp . i18n . isRTL () returns true in RTL languages .
* We cannot use $scripts -> set_translations ( 'wp-i18n' ) to do this
* because WordPress prints a script ' s translations * before * the script ,
* which means , in the case of wp - i18n , that wp . i18n . setLocaleData ()
* is called before wp . i18n is defined .
*/
2021-02-09 00:51:10 +01:00
if ( 'wp-i18n' === $handle ) {
2021-06-15 18:16:57 +02:00
$ltr = _x ( 'ltr' , 'text direction' );
2021-02-09 00:51:10 +01:00
$script = sprintf ( " wp.i18n.setLocaleData( { 'text direction \ u0004ltr': [ '%s' ] } ); " , $ltr );
$scripts -> add_inline_script ( $handle , $script , 'after' );
}
2018-12-13 17:50:36 +01:00
}
}
/**
* Adds inline scripts required for the WordPress JavaScript packages .
*
* @ since 5.0 . 0
2023-08-31 00:11:12 +02:00
* @ since 6.4 . 0 Added relative time strings for the `wp-date` inline script output .
2018-12-13 17:50:36 +01:00
*
2021-10-27 20:21:58 +02:00
* @ global WP_Locale $wp_locale WordPress date and time locale object .
Editor: Persist preferences in user meta.
Adds a new feature to persist editor UI preferences between page loads and browsers.
* Adds a new preferences persistence API.
* Saves editor preferences in user meta instead of in browser's local storage.
Why?
Due to the transient nature of browser storage, this persistence is not as sticky as it is expected to be, including: switching browsers (unique storage between browsers), or using private browsing tabs (storage cleared between sessions), or the same user across a network of sites (storage unique by domain).
This is a backport from Gutenberg.[https://github.com/WordPress/gutenberg/pull/39795 See WordPress/gutenberg PR 39795].
Props talldanwp, youknowriad, noisysocks, mamaduka, costdev, ironprogrammer, hellofromTonya.
See #56467.
Built from https://develop.svn.wordpress.org/trunk@54182
git-svn-id: http://core.svn.wordpress.org/trunk@53741 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-15 18:45:40 +02:00
* @ global wpdb $wpdb WordPress database abstraction object .
2021-10-27 20:21:58 +02:00
*
2018-12-13 17:50:36 +01:00
* @ param WP_Scripts $scripts WP_Scripts object .
*/
2020-02-25 01:59:06 +01:00
function wp_default_packages_inline_scripts ( $scripts ) {
Editor: Persist preferences in user meta.
Adds a new feature to persist editor UI preferences between page loads and browsers.
* Adds a new preferences persistence API.
* Saves editor preferences in user meta instead of in browser's local storage.
Why?
Due to the transient nature of browser storage, this persistence is not as sticky as it is expected to be, including: switching browsers (unique storage between browsers), or using private browsing tabs (storage cleared between sessions), or the same user across a network of sites (storage unique by domain).
This is a backport from Gutenberg.[https://github.com/WordPress/gutenberg/pull/39795 See WordPress/gutenberg PR 39795].
Props talldanwp, youknowriad, noisysocks, mamaduka, costdev, ironprogrammer, hellofromTonya.
See #56467.
Built from https://develop.svn.wordpress.org/trunk@54182
git-svn-id: http://core.svn.wordpress.org/trunk@53741 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-15 18:45:40 +02:00
global $wp_locale , $wpdb ;
2018-12-13 17:50:36 +01:00
2019-03-20 21:53:50 +01:00
if ( isset ( $scripts -> registered [ 'wp-api-fetch' ] ) ) {
$scripts -> registered [ 'wp-api-fetch' ] -> deps [] = 'wp-hooks' ;
}
2019-11-11 16:10:02 +01:00
$scripts -> add_inline_script (
'wp-api-fetch' ,
sprintf (
'wp.apiFetch.use( wp.apiFetch.createRootURLMiddleware( "%s" ) );' ,
2022-06-01 20:14:10 +02:00
sanitize_url ( get_rest_url () )
2019-11-11 16:10:02 +01:00
),
'after'
);
2018-12-13 17:50:36 +01:00
$scripts -> add_inline_script (
'wp-api-fetch' ,
2019-09-23 20:09:58 +02:00
implode (
" \n " ,
2019-09-23 19:47:56 +02:00
array (
sprintf (
'wp.apiFetch.nonceMiddleware = wp.apiFetch.createNonceMiddleware( "%s" );' ,
2022-01-19 00:47:01 +01:00
wp_installing () ? '' : wp_create_nonce ( 'wp_rest' )
2019-09-23 19:47:56 +02:00
),
'wp.apiFetch.use( wp.apiFetch.nonceMiddleware );' ,
2019-10-15 18:17:12 +02:00
'wp.apiFetch.use( wp.apiFetch.mediaUploadMiddleware );' ,
2019-09-23 19:47:56 +02:00
sprintf (
'wp.apiFetch.nonceEndpoint = "%s";' ,
admin_url ( 'admin-ajax.php?action=rest-nonce' )
),
2019-09-23 20:09:58 +02:00
)
2018-12-13 17:50:36 +01:00
),
'after'
);
Editor: Persist preferences in user meta.
Adds a new feature to persist editor UI preferences between page loads and browsers.
* Adds a new preferences persistence API.
* Saves editor preferences in user meta instead of in browser's local storage.
Why?
Due to the transient nature of browser storage, this persistence is not as sticky as it is expected to be, including: switching browsers (unique storage between browsers), or using private browsing tabs (storage cleared between sessions), or the same user across a network of sites (storage unique by domain).
This is a backport from Gutenberg.[https://github.com/WordPress/gutenberg/pull/39795 See WordPress/gutenberg PR 39795].
Props talldanwp, youknowriad, noisysocks, mamaduka, costdev, ironprogrammer, hellofromTonya.
See #56467.
Built from https://develop.svn.wordpress.org/trunk@54182
git-svn-id: http://core.svn.wordpress.org/trunk@53741 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-15 18:45:40 +02:00
$meta_key = $wpdb -> get_blog_prefix () . 'persisted_preferences' ;
2022-09-19 16:20:09 +02:00
$user_id = get_current_user_id ();
Editor: Persist preferences in user meta.
Adds a new feature to persist editor UI preferences between page loads and browsers.
* Adds a new preferences persistence API.
* Saves editor preferences in user meta instead of in browser's local storage.
Why?
Due to the transient nature of browser storage, this persistence is not as sticky as it is expected to be, including: switching browsers (unique storage between browsers), or using private browsing tabs (storage cleared between sessions), or the same user across a network of sites (storage unique by domain).
This is a backport from Gutenberg.[https://github.com/WordPress/gutenberg/pull/39795 See WordPress/gutenberg PR 39795].
Props talldanwp, youknowriad, noisysocks, mamaduka, costdev, ironprogrammer, hellofromTonya.
See #56467.
Built from https://develop.svn.wordpress.org/trunk@54182
git-svn-id: http://core.svn.wordpress.org/trunk@53741 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-15 18:45:40 +02:00
$preload_data = get_user_meta ( $user_id , $meta_key , true );
2018-12-13 17:50:36 +01:00
$scripts -> add_inline_script (
Editor: Persist preferences in user meta.
Adds a new feature to persist editor UI preferences between page loads and browsers.
* Adds a new preferences persistence API.
* Saves editor preferences in user meta instead of in browser's local storage.
Why?
Due to the transient nature of browser storage, this persistence is not as sticky as it is expected to be, including: switching browsers (unique storage between browsers), or using private browsing tabs (storage cleared between sessions), or the same user across a network of sites (storage unique by domain).
This is a backport from Gutenberg.[https://github.com/WordPress/gutenberg/pull/39795 See WordPress/gutenberg PR 39795].
Props talldanwp, youknowriad, noisysocks, mamaduka, costdev, ironprogrammer, hellofromTonya.
See #56467.
Built from https://develop.svn.wordpress.org/trunk@54182
git-svn-id: http://core.svn.wordpress.org/trunk@53741 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-09-15 18:45:40 +02:00
'wp-preferences' ,
sprintf (
' ( function () {
var serverData = % s ;
var userId = " %d " ;
var persistenceLayer = wp . preferencesPersistence . __unstableCreatePersistenceLayer ( serverData , userId );
var preferencesStore = wp . preferences . store ;
wp . data . dispatch ( preferencesStore ) . setPersistenceLayer ( persistenceLayer );
} ) (); ' ,
wp_json_encode ( $preload_data ),
$user_id
2018-12-13 17:50:36 +01:00
)
);
2022-10-11 17:30:11 +02:00
// Backwards compatibility - configure the old wp-data persistence system.
$scripts -> add_inline_script (
'wp-data' ,
implode (
" \n " ,
array (
'( function() {' ,
' var userId = ' . get_current_user_ID () . ';' ,
' var storageKey = "WP_DATA_USER_" + userId;' ,
' wp.data' ,
' .use( wp.data.plugins.persistence, { storageKey: storageKey } );' ,
'} )();' ,
)
)
);
2020-10-01 19:43:08 +02:00
// Calculate the timezone abbr (EDT, PST) if possible.
$timezone_string = get_option ( 'timezone_string' , 'UTC' );
$timezone_abbr = '' ;
if ( ! empty ( $timezone_string ) ) {
2021-08-03 14:04:58 +02:00
$timezone_date = new DateTime ( 'now' , new DateTimeZone ( $timezone_string ) );
2020-10-01 19:43:08 +02:00
$timezone_abbr = $timezone_date -> format ( 'T' );
}
2024-02-08 08:08:13 +01:00
$gmt_offset = get_option ( 'gmt_offset' , 0 );
2018-12-13 17:50:36 +01:00
$scripts -> add_inline_script (
'wp-date' ,
sprintf (
'wp.date.setSettings( %s );' ,
wp_json_encode (
array (
'l10n' => array (
'locale' => get_user_locale (),
'months' => array_values ( $wp_locale -> month ),
'monthsShort' => array_values ( $wp_locale -> month_abbrev ),
'weekdays' => array_values ( $wp_locale -> weekday ),
'weekdaysShort' => array_values ( $wp_locale -> weekday_abbrev ),
'meridiem' => ( object ) $wp_locale -> meridiem ,
'relative' => array (
2019-09-03 02:41:05 +02:00
/* translators: %s: Duration. */
2018-12-14 06:58:52 +01:00
'future' => __ ( '%s from now' ),
2019-09-03 02:41:05 +02:00
/* translators: %s: Duration. */
2018-12-14 06:58:52 +01:00
'past' => __ ( '%s ago' ),
2023-08-31 00:11:12 +02:00
/* translators: One second from or to a particular datetime, e.g., "a second ago" or "a second from now". */
's' => __ ( 'a second' ),
2024-02-08 08:11:08 +01:00
/* translators: %d: Duration in seconds from or to a particular datetime, e.g., "4 seconds ago" or "4 seconds from now". */
2023-08-31 00:11:12 +02:00
'ss' => __ ( '%d seconds' ),
/* translators: One minute from or to a particular datetime, e.g., "a minute ago" or "a minute from now". */
'm' => __ ( 'a minute' ),
2024-02-08 08:11:08 +01:00
/* translators: %d: Duration in minutes from or to a particular datetime, e.g., "4 minutes ago" or "4 minutes from now". */
2023-08-31 00:11:12 +02:00
'mm' => __ ( '%d minutes' ),
2024-02-08 08:11:08 +01:00
/* translators: One hour from or to a particular datetime, e.g., "an hour ago" or "an hour from now". */
2023-08-31 00:11:12 +02:00
'h' => __ ( 'an hour' ),
2024-02-08 08:11:08 +01:00
/* translators: %d: Duration in hours from or to a particular datetime, e.g., "4 hours ago" or "4 hours from now". */
2023-08-31 00:11:12 +02:00
'hh' => __ ( '%d hours' ),
2024-02-08 08:11:08 +01:00
/* translators: One day from or to a particular datetime, e.g., "a day ago" or "a day from now". */
2023-08-31 00:11:12 +02:00
'd' => __ ( 'a day' ),
2024-02-08 08:11:08 +01:00
/* translators: %d: Duration in days from or to a particular datetime, e.g., "4 days ago" or "4 days from now". */
2023-08-31 00:11:12 +02:00
'dd' => __ ( '%d days' ),
2024-02-08 08:11:08 +01:00
/* translators: One month from or to a particular datetime, e.g., "a month ago" or "a month from now". */
2023-08-31 00:11:12 +02:00
'M' => __ ( 'a month' ),
2024-02-08 08:11:08 +01:00
/* translators: %d: Duration in months from or to a particular datetime, e.g., "4 months ago" or "4 months from now". */
2023-08-31 00:11:12 +02:00
'MM' => __ ( '%d months' ),
2024-02-08 08:11:08 +01:00
/* translators: One year from or to a particular datetime, e.g., "a year ago" or "a year from now". */
2023-08-31 00:11:12 +02:00
'y' => __ ( 'a year' ),
2024-02-08 08:11:08 +01:00
/* translators: %d: Duration in years from or to a particular datetime, e.g., "4 years ago" or "4 years from now". */
2023-08-31 00:11:12 +02:00
'yy' => __ ( '%d years' ),
2018-12-13 17:50:36 +01:00
),
2022-09-06 04:52:11 +02:00
'startOfWeek' => ( int ) get_option ( 'start_of_week' , 0 ),
2018-12-13 17:50:36 +01:00
),
'formats' => array (
2020-09-18 12:37:08 +02:00
/* translators: Time format, see https://www.php.net/manual/datetime.format.php */
2018-12-14 06:58:52 +01:00
'time' => get_option ( 'time_format' , __ ( 'g:i a' ) ),
2020-09-18 12:37:08 +02:00
/* translators: Date format, see https://www.php.net/manual/datetime.format.php */
2018-12-14 06:58:52 +01:00
'date' => get_option ( 'date_format' , __ ( 'F j, Y' ) ),
2020-09-18 12:37:08 +02:00
/* translators: Date/Time format, see https://www.php.net/manual/datetime.format.php */
2018-12-14 06:58:52 +01:00
'datetime' => __ ( 'F j, Y g:i a' ),
2020-09-18 12:37:08 +02:00
/* translators: Abbreviated date/time format, see https://www.php.net/manual/datetime.format.php */
2018-12-14 06:58:52 +01:00
'datetimeAbbreviated' => __ ( 'M j, Y g:i a' ),
2018-12-13 17:50:36 +01:00
),
'timezone' => array (
2024-02-08 08:08:13 +01:00
'offset' => ( float ) $gmt_offset ,
'offsetFormatted' => str_replace ( array ( '.25' , '.5' , '.75' ), array ( ':15' , ':30' , ':45' ), ( string ) $gmt_offset ),
'string' => $timezone_string ,
'abbr' => $timezone_abbr ,
2018-12-13 17:50:36 +01:00
),
)
)
),
'after'
);
// Loading the old editor and its config to ensure the classic block works as expected.
$scripts -> add_inline_script (
'editor' ,
'window.wp.oldEditor = window.wp.editor;' ,
'after'
);
2021-07-09 03:10:57 +02:00
2021-07-09 12:50:56 +02:00
/*
* wp - editor module is exposed as window . wp . editor .
* Problem : there is quite some code expecting window . wp . oldEditor object available under window . wp . editor .
* Solution : fuse the two objects together to maintain backward compatibility .
* For more context , see https :// github . com / WordPress / gutenberg / issues / 33203.
*/
2021-07-09 03:10:57 +02:00
$scripts -> add_inline_script (
'wp-editor' ,
'Object.assign( window.wp.editor, window.wp.oldEditor );' ,
'after'
);
2018-12-17 04:27:12 +01:00
}
/**
* Adds inline scripts required for the TinyMCE in the block editor .
*
2018-12-17 18:03:51 +01:00
* These TinyMCE init settings are used to extend and override the default settings
* from `_WP_Editors::default_settings()` for the Classic block .
*
2018-12-17 04:27:12 +01:00
* @ since 5.0 . 0
*
* @ global WP_Scripts $wp_scripts
*/
function wp_tinymce_inline_scripts () {
global $wp_scripts ;
2018-12-13 17:50:36 +01:00
2018-12-17 18:03:51 +01:00
/** This filter is documented in wp-includes/class-wp-editor.php */
$editor_settings = apply_filters ( 'wp_editor_settings' , array ( 'tinymce' => true ), 'classic-block' );
2018-12-17 04:14:31 +01:00
$tinymce_plugins = array (
'charmap' ,
'colorpicker' ,
'hr' ,
'lists' ,
'media' ,
'paste' ,
'tabfocus' ,
'textcolor' ,
'fullscreen' ,
'wordpress' ,
'wpautoresize' ,
'wpeditimage' ,
'wpemoji' ,
'wpgallery' ,
'wplink' ,
'wpdialogs' ,
'wptextpattern' ,
'wpview' ,
);
2019-10-28 20:48:01 +01:00
/** This filter is documented in wp-includes/class-wp-editor.php */
2018-12-17 04:14:31 +01:00
$tinymce_plugins = apply_filters ( 'tiny_mce_plugins' , $tinymce_plugins , 'classic-block' );
$tinymce_plugins = array_unique ( $tinymce_plugins );
2018-12-17 18:03:51 +01:00
$disable_captions = false ;
// Runs after `tiny_mce_plugins` but before `mce_buttons`.
/** This filter is documented in wp-admin/includes/media.php */
if ( apply_filters ( 'disable_captions' , '' ) ) {
$disable_captions = true ;
}
2018-12-17 04:14:31 +01:00
$toolbar1 = array (
'formatselect' ,
'bold' ,
'italic' ,
'bullist' ,
'numlist' ,
'blockquote' ,
'alignleft' ,
'aligncenter' ,
'alignright' ,
'link' ,
'unlink' ,
'wp_more' ,
'spellchecker' ,
'wp_add_media' ,
2018-12-17 04:23:55 +01:00
'wp_adv' ,
2018-12-13 17:50:36 +01:00
);
2019-10-28 20:48:01 +01:00
/** This filter is documented in wp-includes/class-wp-editor.php */
2018-12-17 04:14:31 +01:00
$toolbar1 = apply_filters ( 'mce_buttons' , $toolbar1 , 'classic-block' );
$toolbar2 = array (
'strikethrough' ,
'hr' ,
'forecolor' ,
'pastetext' ,
'removeformat' ,
'charmap' ,
'outdent' ,
'indent' ,
'undo' ,
'redo' ,
'wp_help' ,
);
2018-12-13 17:50:36 +01:00
2019-10-28 20:48:01 +01:00
/** This filter is documented in wp-includes/class-wp-editor.php */
2018-12-17 04:14:31 +01:00
$toolbar2 = apply_filters ( 'mce_buttons_2' , $toolbar2 , 'classic-block' );
2019-10-28 20:48:01 +01:00
/** This filter is documented in wp-includes/class-wp-editor.php */
2018-12-17 04:14:31 +01:00
$toolbar3 = apply_filters ( 'mce_buttons_3' , array (), 'classic-block' );
2019-10-28 20:48:01 +01:00
/** This filter is documented in wp-includes/class-wp-editor.php */
2018-12-17 04:14:31 +01:00
$toolbar4 = apply_filters ( 'mce_buttons_4' , array (), 'classic-block' );
2019-10-28 20:48:01 +01:00
/** This filter is documented in wp-includes/class-wp-editor.php */
2018-12-17 04:14:31 +01:00
$external_plugins = apply_filters ( 'mce_external_plugins' , array (), 'classic-block' );
$tinymce_settings = array (
2018-12-17 04:16:12 +01:00
'plugins' => implode ( ',' , $tinymce_plugins ),
'toolbar1' => implode ( ',' , $toolbar1 ),
'toolbar2' => implode ( ',' , $toolbar2 ),
'toolbar3' => implode ( ',' , $toolbar3 ),
'toolbar4' => implode ( ',' , $toolbar4 ),
'external_plugins' => wp_json_encode ( $external_plugins ),
2018-12-17 04:14:31 +01:00
'classic_block_editor' => true ,
2018-12-13 17:50:36 +01:00
);
2018-12-17 04:14:31 +01:00
2018-12-17 18:03:51 +01:00
if ( $disable_captions ) {
$tinymce_settings [ 'wpeditimage_disable_captions' ] = true ;
}
if ( ! empty ( $editor_settings [ 'tinymce' ] ) && is_array ( $editor_settings [ 'tinymce' ] ) ) {
array_merge ( $tinymce_settings , $editor_settings [ 'tinymce' ] );
}
2019-10-28 20:48:01 +01:00
/** This filter is documented in wp-includes/class-wp-editor.php */
2018-12-17 04:14:31 +01:00
$tinymce_settings = apply_filters ( 'tiny_mce_before_init' , $tinymce_settings , 'classic-block' );
Docs: Replace multiple single line comments with multi-line comments.
This changeset updates various comments as per WordPress PHP Inline Documentation Standards.
See https://developer.wordpress.org/coding-standards/inline-documentation-standards/php/#5-inline-comments.
Follow-up to [56174], [56175], [56176], [56177], [56178], [56179], [56180], [56191], [56192], [56193].
Props costdev, audrasjb.
See #58459.
Built from https://develop.svn.wordpress.org/trunk@56194
git-svn-id: http://core.svn.wordpress.org/trunk@55706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-11 01:11:22 +02:00
/*
* Do " by hand " translation from PHP array to js object .
* Prevents breakage in some custom settings .
*/
2018-12-17 04:14:31 +01:00
$init_obj = '' ;
foreach ( $tinymce_settings as $key => $value ) {
if ( is_bool ( $value ) ) {
2018-12-17 04:16:12 +01:00
$val = $value ? 'true' : 'false' ;
2018-12-17 04:14:31 +01:00
$init_obj .= $key . ':' . $val . ',' ;
continue ;
} elseif ( ! empty ( $value ) && is_string ( $value ) && (
2019-08-03 22:21:55 +02:00
( '{' === $value [ 0 ] && '}' === $value [ strlen ( $value ) - 1 ] ) ||
( '[' === $value [ 0 ] && ']' === $value [ strlen ( $value ) - 1 ] ) ||
2018-12-17 04:14:31 +01:00
preg_match ( '/^\(?function ?\(/' , $value ) ) ) {
$init_obj .= $key . ':' . $value . ',' ;
continue ;
}
$init_obj .= $key . ':"' . $value . '",' ;
}
$init_obj = '{' . trim ( $init_obj , ' ,' ) . '}' ;
$script = ' window . wpEditorL10n = {
tinymce : {
baseURL : ' . wp_json_encode( includes_url( ' js / tinymce ' ) ) . ' ,
suffix : ' . ( SCRIPT_DEBUG ? ' " " ' : ' " .min " ' ) . ' ,
settings : ' . $init_obj . ' ,
}
} ' ;
2018-12-17 04:27:12 +01:00
$wp_scripts -> add_inline_script ( 'wp-block-library' , $script , 'before' );
2018-12-13 17:50:36 +01:00
}
2018-12-13 18:27:38 +01:00
/**
* Registers all the WordPress packages scripts .
*
* @ since 5.0 . 0
*
* @ param WP_Scripts $scripts WP_Scripts object .
*/
2020-02-25 01:59:06 +01:00
function wp_default_packages ( $scripts ) {
2018-12-13 18:27:38 +01:00
wp_default_packages_vendor ( $scripts );
2022-04-11 18:10:22 +02:00
wp_register_development_scripts ( $scripts );
2018-12-13 18:27:38 +01:00
wp_register_tinymce_scripts ( $scripts );
wp_default_packages_scripts ( $scripts );
if ( did_action ( 'init' ) ) {
wp_default_packages_inline_scripts ( $scripts );
}
}
/**
* Returns the suffix that can be used for the scripts .
*
* There are two suffix types , the normal one and the dev suffix .
*
* @ since 5.0 . 0
*
* @ param string $type The type of suffix to retrieve .
* @ return string The script suffix .
*/
function wp_scripts_get_suffix ( $type = '' ) {
static $suffixes ;
2020-02-09 17:55:09 +01:00
if ( null === $suffixes ) {
2020-01-29 01:45:18 +01:00
// Include an unmodified $wp_version.
2020-02-06 07:33:11 +01:00
require ABSPATH . WPINC . '/version.php' ;
2018-12-13 18:27:38 +01:00
2023-06-23 17:45:21 +02:00
/*
* Note : str_contains () is not used here , as this file can be included
* via wp - admin / load - scripts . php or wp - admin / load - styles . php , in which case
* the polyfills from wp - includes / compat . php are not loaded .
*/
$develop_src = false !== strpos ( $wp_version , '-src' );
2018-12-13 18:27:38 +01:00
if ( ! defined ( 'SCRIPT_DEBUG' ) ) {
define ( 'SCRIPT_DEBUG' , $develop_src );
}
$suffix = SCRIPT_DEBUG ? '' : '.min' ;
$dev_suffix = $develop_src ? '' : '.min' ;
$suffixes = array (
'suffix' => $suffix ,
'dev_suffix' => $dev_suffix ,
);
}
2020-02-09 17:55:09 +01:00
if ( 'dev' === $type ) {
2018-12-13 18:27:38 +01:00
return $suffixes [ 'dev_suffix' ];
}
return $suffixes [ 'suffix' ];
}
2008-08-30 21:51:29 +02:00
/**
2022-04-20 16:09:11 +02:00
* Registers all WordPress scripts .
2008-08-30 21:51:29 +02:00
*
2011-08-03 12:19:00 +02:00
* Localizes some of them .
2016-05-01 19:32:26 +02:00
* args order : `$scripts->add( 'handle', 'url', 'dependencies', 'query-string', 1 );`
2011-08-03 12:19:00 +02:00
* when last arg === 1 queues the script for the footer
2008-08-30 21:51:29 +02:00
*
2008-08-30 23:23:43 +02:00
* @ since 2.6 . 0
2008-08-30 21:51:29 +02:00
*
2015-05-27 21:34:27 +02:00
* @ param WP_Scripts $scripts WP_Scripts object .
2008-08-30 21:51:29 +02:00
*/
2020-02-25 01:59:06 +01:00
function wp_default_scripts ( $scripts ) {
2018-12-13 18:27:38 +01:00
$suffix = wp_scripts_get_suffix ();
$dev_suffix = wp_scripts_get_suffix ( 'dev' );
2019-05-28 05:32:52 +02:00
$guessurl = site_url ();
2013-09-04 23:16:09 +02:00
2019-05-28 05:32:52 +02:00
if ( ! $guessurl ) {
2013-09-04 23:16:09 +02:00
$guessed_url = true ;
2017-12-01 00:11:00 +01:00
$guessurl = wp_guess_url ();
2013-09-04 23:16:09 +02:00
}
2008-10-05 06:43:52 +02:00
2017-12-01 00:11:00 +01:00
$scripts -> base_url = $guessurl ;
$scripts -> content_url = defined ( 'WP_CONTENT_URL' ) ? WP_CONTENT_URL : '' ;
2008-05-21 07:56:04 +02:00
$scripts -> default_version = get_bloginfo ( 'version' );
2017-12-01 00:11:00 +01:00
$scripts -> default_dirs = array ( '/wp-admin/js/' , '/wp-includes/js/' );
2009-01-14 15:18:51 +01:00
2014-06-30 01:43:14 +02:00
$scripts -> add ( 'utils' , " /wp-includes/js/utils $suffix .js " );
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'utils' ,
'userSettings' ,
array (
2017-12-01 00:11:00 +01:00
'url' => ( string ) SITECOOKIEPATH ,
'uid' => ( string ) get_current_user_id (),
'time' => ( string ) time (),
'secure' => ( string ) ( 'https' === parse_url ( site_url (), PHP_URL_SCHEME ) ),
)
);
$scripts -> add ( 'common' , " /wp-admin/js/common $suffix .js " , array ( 'jquery' , 'hoverIntent' , 'utils' ), false , 1 );
2020-07-01 21:50:02 +02:00
$scripts -> set_translations ( 'common' );
2008-05-21 07:56:04 +02:00
2019-09-04 19:13:21 +02:00
$scripts -> add ( 'wp-sanitize' , " /wp-includes/js/wp-sanitize $suffix .js " , array (), false , 1 );
2014-06-30 01:43:14 +02:00
$scripts -> add ( 'sack' , " /wp-includes/js/tw-sack $suffix .js " , array (), '1.6.1' , 1 );
2009-01-02 16:08:58 +01:00
2014-06-30 01:43:14 +02:00
$scripts -> add ( 'quicktags' , " /wp-includes/js/quicktags $suffix .js " , array (), false , 1 );
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'quicktags' ,
'quicktagsL10n' ,
array (
2017-12-01 00:11:00 +01:00
'closeAllOpenTags' => __ ( 'Close all open tags' ),
'closeTags' => __ ( 'close tags' ),
'enterURL' => __ ( 'Enter the URL' ),
'enterImageURL' => __ ( 'Enter the URL of the image' ),
'enterImageDescription' => __ ( 'Enter a description of the image' ),
'textdirection' => __ ( 'text direction' ),
'toggleTextdirection' => __ ( 'Toggle Editor Text Direction' ),
'dfw' => __ ( 'Distraction-free writing mode' ),
'strong' => __ ( 'Bold' ),
'strongClose' => __ ( 'Close bold tag' ),
'em' => __ ( 'Italic' ),
'emClose' => __ ( 'Close italic tag' ),
'link' => __ ( 'Insert link' ),
'blockquote' => __ ( 'Blockquote' ),
'blockquoteClose' => __ ( 'Close blockquote tag' ),
'del' => __ ( 'Deleted text (strikethrough)' ),
'delClose' => __ ( 'Close deleted text tag' ),
'ins' => __ ( 'Inserted text' ),
'insClose' => __ ( 'Close inserted text tag' ),
'image' => __ ( 'Insert image' ),
'ul' => __ ( 'Bulleted list' ),
'ulClose' => __ ( 'Close bulleted list tag' ),
'ol' => __ ( 'Numbered list' ),
'olClose' => __ ( 'Close numbered list tag' ),
'li' => __ ( 'List item' ),
'liClose' => __ ( 'Close list item tag' ),
'code' => __ ( 'Code' ),
'codeClose' => __ ( 'Close code tag' ),
'more' => __ ( 'Insert Read More tag' ),
)
);
$scripts -> add ( 'colorpicker' , " /wp-includes/js/colorpicker $suffix .js " , array ( 'prototype' ), '3517m' );
2018-12-13 23:23:17 +01:00
$scripts -> add ( 'editor' , " /wp-admin/js/editor $suffix .js " , array ( 'utils' , 'jquery' ), false , 1 );
2011-05-02 10:10:23 +02:00
2022-10-04 17:55:23 +02:00
$scripts -> add ( 'clipboard' , " /wp-includes/js/clipboard $suffix .js " , array (), '2.0.11' , 1 );
2019-03-27 23:31:52 +01:00
2022-04-08 08:00:08 +02:00
$scripts -> add ( 'wp-ajax-response' , " /wp-includes/js/wp-ajax-response $suffix .js " , array ( 'jquery' , 'wp-a11y' ), false , 1 );
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'wp-ajax-response' ,
'wpAjax' ,
array (
2017-12-01 00:11:00 +01:00
'noPerm' => __ ( 'Sorry, you are not allowed to do that.' ),
2018-02-19 03:13:32 +01:00
'broken' => __ ( 'Something went wrong.' ),
2017-12-01 00:11:00 +01:00
)
);
2008-02-29 10:51:36 +01:00
2017-08-02 18:45:44 +02:00
$scripts -> add ( 'wp-api-request' , " /wp-includes/js/api-request $suffix .js " , array ( 'jquery' ), false , 1 );
// `wpApiSettings` is also used by `wp-api`, which depends on this script.
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'wp-api-request' ,
'wpApiSettings' ,
array (
2022-06-01 20:14:10 +02:00
'root' => sanitize_url ( get_rest_url () ),
2022-01-19 00:47:01 +01:00
'nonce' => wp_installing () ? '' : wp_create_nonce ( 'wp_rest' ),
2017-12-01 00:11:00 +01:00
'versionString' => 'wp/v2/' ,
)
);
2017-08-02 18:45:44 +02:00
2020-10-07 18:33:25 +02:00
$scripts -> add ( 'wp-pointer' , " /wp-includes/js/wp-pointer $suffix .js " , array ( 'jquery-ui-core' ), false , 1 );
2020-07-01 21:30:02 +02:00
$scripts -> set_translations ( 'wp-pointer' );
2011-09-18 23:17:09 +02:00
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'autosave' , " /wp-includes/js/autosave $suffix .js " , array ( 'heartbeat' ), false , 1 );
2013-02-14 23:58:04 +01:00
2018-12-17 20:28:51 +01:00
$scripts -> add ( 'heartbeat' , " /wp-includes/js/heartbeat $suffix .js " , array ( 'jquery' , 'wp-hooks' ), false , 1 );
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'heartbeat' ,
'heartbeatSettings' ,
2014-03-26 06:52:15 +01:00
/**
2016-05-22 20:50:28 +02:00
* Filters the Heartbeat settings .
2014-03-26 06:52:15 +01:00
*
* @ since 3.6 . 0
*
* @ param array $settings Heartbeat settings array .
*/
2013-01-29 07:15:25 +01:00
apply_filters ( 'heartbeat_settings' , array () )
);
2007-06-14 04:25:30 +02:00
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'wp-auth-check' , " /wp-includes/js/wp-auth-check $suffix .js " , array ( 'heartbeat' ), false , 1 );
2020-07-03 21:05:03 +02:00
$scripts -> set_translations ( 'wp-auth-check' );
2013-03-27 09:43:11 +01:00
2014-06-30 01:43:14 +02:00
$scripts -> add ( 'wp-lists' , " /wp-includes/js/wp-lists $suffix .js " , array ( 'wp-ajax-response' , 'jquery-color' ), false , 1 );
2007-10-10 00:49:42 +02:00
2024-02-26 21:18:09 +01:00
$scripts -> add ( 'site-icon' , '/wp-admin/js/site-icon.js' , array ( 'jquery' ), false , 1 );
$scripts -> set_translations ( 'site-icon' );
General: Add an option to configure the site icon in general settings.
This restores the site icon setting to its original home on the settings page where it lives with the title and tagline.
The base for this code was originally added in [32994] and then removed in [33329]. The majority of the modification to that version are to remove the no-js pieces and make the workflow completely inline rather than putting the cropping on a separate page.
Additionally, since image crops rely on the ability to upload an image, this setting is gated by the `upload_files` capability.
Follow-up to: [32994], [33329].
Props jorbin, audrasjb, mukesh27, joedolson, afercia, kebbet, swissspidy, obenland, jameskoster, kjellr, andraganescu, stacimc, mikeschroder, h71, krupajnanda, huzaifaalmesbah.
Fixes #54370.
See #16434.
Built from https://develop.svn.wordpress.org/trunk@57602
git-svn-id: http://core.svn.wordpress.org/trunk@57103 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-02-12 22:57:09 +01:00
2012-08-23 02:51:08 +02:00
// WordPress no longer uses or bundles Prototype or script.aculo.us. These are now pulled from an external source.
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'prototype' , 'https://ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js' , array (), '1.7.1' );
$scripts -> add ( 'scriptaculous-root' , 'https://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/scriptaculous.js' , array ( 'prototype' ), '1.9.0' );
$scripts -> add ( 'scriptaculous-builder' , 'https://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/builder.js' , array ( 'scriptaculous-root' ), '1.9.0' );
$scripts -> add ( 'scriptaculous-dragdrop' , 'https://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/dragdrop.js' , array ( 'scriptaculous-builder' , 'scriptaculous-effects' ), '1.9.0' );
$scripts -> add ( 'scriptaculous-effects' , 'https://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/effects.js' , array ( 'scriptaculous-root' ), '1.9.0' );
$scripts -> add ( 'scriptaculous-slider' , 'https://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/slider.js' , array ( 'scriptaculous-effects' ), '1.9.0' );
2015-06-18 17:51:26 +02:00
$scripts -> add ( 'scriptaculous-sound' , 'https://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/sound.js' , array ( 'scriptaculous-root' ), '1.9.0' );
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'scriptaculous-controls' , 'https://ajax.googleapis.com/ajax/libs/scriptaculous/1.9.0/controls.js' , array ( 'scriptaculous-root' ), '1.9.0' );
$scripts -> add ( 'scriptaculous' , false , array ( 'scriptaculous-dragdrop' , 'scriptaculous-slider' , 'scriptaculous-controls' ) );
2008-05-21 07:56:04 +02:00
2020-01-29 01:45:18 +01:00
// Not used in core, replaced by Jcrop.js.
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'cropper' , '/wp-includes/js/crop/cropper.js' , array ( 'scriptaculous-dragdrop' ) );
2008-05-21 07:56:04 +02:00
Docs: Replace multiple single line comments with multi-line comments.
This changeset updates various comments as per WordPress PHP Inline Documentation Standards.
See https://developer.wordpress.org/coding-standards/inline-documentation-standards/php/#5-inline-comments.
Follow-up to [56174], [56175], [56176], [56177], [56178], [56179], [56180], [56191], [56192], [56193].
Props costdev, audrasjb.
See #58459.
Built from https://develop.svn.wordpress.org/trunk@56194
git-svn-id: http://core.svn.wordpress.org/trunk@55706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-11 01:11:22 +02:00
/*
* jQuery .
* The unminified jquery . js and jquery - migrate . js are included to facilitate debugging .
*/
2023-08-28 19:14:23 +02:00
$scripts -> add ( 'jquery' , false , array ( 'jquery-core' , 'jquery-migrate' ), '3.7.1' );
$scripts -> add ( 'jquery-core' , " /wp-includes/js/jquery/jquery $suffix .js " , array (), '3.7.1' );
2023-06-09 07:49:24 +02:00
$scripts -> add ( 'jquery-migrate' , " /wp-includes/js/jquery/jquery-migrate $suffix .js " , array (), '3.4.1' );
2011-09-23 22:05:13 +02:00
Docs: Replace multiple single line comments with multi-line comments.
This changeset updates various comments as per WordPress PHP Inline Documentation Standards.
See https://developer.wordpress.org/coding-standards/inline-documentation-standards/php/#5-inline-comments.
Follow-up to [56174], [56175], [56176], [56177], [56178], [56179], [56180], [56191], [56192], [56193].
Props costdev, audrasjb.
See #58459.
Built from https://develop.svn.wordpress.org/trunk@56194
git-svn-id: http://core.svn.wordpress.org/trunk@55706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-11 01:11:22 +02:00
/*
* Full jQuery UI .
* The build process in 1.12 . 1 has changed significantly .
* In order to keep backwards compatibility , and to keep the optimized loading ,
* the source files were flattened and included with some modifications for AMD loading .
* A notable change is that 'jquery-ui-core' now contains 'jquery-ui-position' and 'jquery-ui-widget' .
*/
2024-05-27 23:14:15 +02:00
$scripts -> add ( 'jquery-ui-core' , " /wp-includes/js/jquery/ui/core $suffix .js " , array ( 'jquery' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-core' , " /wp-includes/js/jquery/ui/effect $suffix .js " , array ( 'jquery' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-blind' , " /wp-includes/js/jquery/ui/effect-blind $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-bounce' , " /wp-includes/js/jquery/ui/effect-bounce $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-clip' , " /wp-includes/js/jquery/ui/effect-clip $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-drop' , " /wp-includes/js/jquery/ui/effect-drop $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-explode' , " /wp-includes/js/jquery/ui/effect-explode $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-fade' , " /wp-includes/js/jquery/ui/effect-fade $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-fold' , " /wp-includes/js/jquery/ui/effect-fold $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-highlight' , " /wp-includes/js/jquery/ui/effect-highlight $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-puff' , " /wp-includes/js/jquery/ui/effect-puff $suffix .js " , array ( 'jquery-effects-core' , 'jquery-effects-scale' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-pulsate' , " /wp-includes/js/jquery/ui/effect-pulsate $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-scale' , " /wp-includes/js/jquery/ui/effect-scale $suffix .js " , array ( 'jquery-effects-core' , 'jquery-effects-size' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-shake' , " /wp-includes/js/jquery/ui/effect-shake $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-size' , " /wp-includes/js/jquery/ui/effect-size $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-slide' , " /wp-includes/js/jquery/ui/effect-slide $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-effects-transfer' , " /wp-includes/js/jquery/ui/effect-transfer $suffix .js " , array ( 'jquery-effects-core' ), '1.13.3' , 1 );
2020-10-07 18:33:25 +02:00
// Widgets
2024-05-27 23:14:15 +02:00
$scripts -> add ( 'jquery-ui-accordion' , " /wp-includes/js/jquery/ui/accordion $suffix .js " , array ( 'jquery-ui-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-autocomplete' , " /wp-includes/js/jquery/ui/autocomplete $suffix .js " , array ( 'jquery-ui-menu' , 'wp-a11y' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-button' , " /wp-includes/js/jquery/ui/button $suffix .js " , array ( 'jquery-ui-core' , 'jquery-ui-controlgroup' , 'jquery-ui-checkboxradio' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-datepicker' , " /wp-includes/js/jquery/ui/datepicker $suffix .js " , array ( 'jquery-ui-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-dialog' , " /wp-includes/js/jquery/ui/dialog $suffix .js " , array ( 'jquery-ui-resizable' , 'jquery-ui-draggable' , 'jquery-ui-button' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-menu' , " /wp-includes/js/jquery/ui/menu $suffix .js " , array ( 'jquery-ui-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-mouse' , " /wp-includes/js/jquery/ui/mouse $suffix .js " , array ( 'jquery-ui-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-progressbar' , " /wp-includes/js/jquery/ui/progressbar $suffix .js " , array ( 'jquery-ui-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-selectmenu' , " /wp-includes/js/jquery/ui/selectmenu $suffix .js " , array ( 'jquery-ui-menu' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-slider' , " /wp-includes/js/jquery/ui/slider $suffix .js " , array ( 'jquery-ui-mouse' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-spinner' , " /wp-includes/js/jquery/ui/spinner $suffix .js " , array ( 'jquery-ui-button' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-tabs' , " /wp-includes/js/jquery/ui/tabs $suffix .js " , array ( 'jquery-ui-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-tooltip' , " /wp-includes/js/jquery/ui/tooltip $suffix .js " , array ( 'jquery-ui-core' ), '1.13.3' , 1 );
2020-10-07 18:33:25 +02:00
// New in 1.12.1
2024-05-27 23:14:15 +02:00
$scripts -> add ( 'jquery-ui-checkboxradio' , " /wp-includes/js/jquery/ui/checkboxradio $suffix .js " , array ( 'jquery-ui-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-controlgroup' , " /wp-includes/js/jquery/ui/controlgroup $suffix .js " , array ( 'jquery-ui-core' ), '1.13.3' , 1 );
2020-10-07 18:33:25 +02:00
// Interactions
2024-05-27 23:14:15 +02:00
$scripts -> add ( 'jquery-ui-draggable' , " /wp-includes/js/jquery/ui/draggable $suffix .js " , array ( 'jquery-ui-mouse' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-droppable' , " /wp-includes/js/jquery/ui/droppable $suffix .js " , array ( 'jquery-ui-draggable' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-resizable' , " /wp-includes/js/jquery/ui/resizable $suffix .js " , array ( 'jquery-ui-mouse' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-selectable' , " /wp-includes/js/jquery/ui/selectable $suffix .js " , array ( 'jquery-ui-mouse' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-sortable' , " /wp-includes/js/jquery/ui/sortable $suffix .js " , array ( 'jquery-ui-mouse' ), '1.13.3' , 1 );
2020-10-07 18:33:25 +02:00
Docs: Replace multiple single line comments with multi-line comments.
This changeset updates various comments as per WordPress PHP Inline Documentation Standards.
See https://developer.wordpress.org/coding-standards/inline-documentation-standards/php/#5-inline-comments.
Follow-up to [56174], [56175], [56176], [56177], [56178], [56179], [56180], [56191], [56192], [56193].
Props costdev, audrasjb.
See #58459.
Built from https://develop.svn.wordpress.org/trunk@56194
git-svn-id: http://core.svn.wordpress.org/trunk@55706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-11 01:11:22 +02:00
/*
* As of 1.12 . 1 `jquery-ui-position` and `jquery-ui-widget` are part of `jquery-ui-core` .
* Listed here for back - compat .
*/
2024-05-27 23:14:15 +02:00
$scripts -> add ( 'jquery-ui-position' , false , array ( 'jquery-ui-core' ), '1.13.3' , 1 );
$scripts -> add ( 'jquery-ui-widget' , false , array ( 'jquery-ui-core' ), '1.13.3' , 1 );
2009-01-14 15:18:51 +01:00
2020-01-29 01:45:18 +01:00
// Deprecated, not used in core, most functionality is included in jQuery 1.3.
2021-07-21 14:20:57 +02:00
$scripts -> add ( 'jquery-form' , " /wp-includes/js/jquery/jquery.form $suffix .js " , array ( 'jquery' ), '4.3.0' , 1 );
2009-01-14 15:18:51 +01:00
2020-01-29 01:45:18 +01:00
// jQuery plugins.
2022-02-01 02:22:04 +01:00
$scripts -> add ( 'jquery-color' , '/wp-includes/js/jquery/jquery.color.min.js' , array ( 'jquery' ), '2.2.0' , 1 );
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'schedule' , '/wp-includes/js/jquery/jquery.schedule.js' , array ( 'jquery' ), '20m' , 1 );
2022-03-10 19:54:02 +01:00
$scripts -> add ( 'jquery-query' , '/wp-includes/js/jquery/jquery.query.js' , array ( 'jquery' ), '2.2.3' , 1 );
2021-02-23 20:45:04 +01:00
$scripts -> add ( 'jquery-serialize-object' , '/wp-includes/js/jquery/jquery.serialize-object.js' , array ( 'jquery' ), '0.2-wp' , 1 );
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'jquery-hotkeys' , " /wp-includes/js/jquery/jquery.hotkeys $suffix .js " , array ( 'jquery' ), '0.0.2m' , 1 );
$scripts -> add ( 'jquery-table-hotkeys' , " /wp-includes/js/jquery/jquery.table-hotkeys $suffix .js " , array ( 'jquery' , 'jquery-hotkeys' ), false , 1 );
2020-10-07 18:33:25 +02:00
$scripts -> add ( 'jquery-touch-punch' , '/wp-includes/js/jquery/jquery.ui.touch-punch.js' , array ( 'jquery-ui-core' , 'jquery-ui-mouse' ), '0.2.2' , 1 );
2014-02-25 20:53:15 +01:00
2019-04-17 15:26:51 +02:00
// Not used any more, registered for backward compatibility.
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'suggest' , " /wp-includes/js/jquery/suggest $suffix .js " , array ( 'jquery' ), '1.1-20110113' , 1 );
2016-10-15 00:40:28 +02:00
Docs: Replace multiple single line comments with multi-line comments.
This changeset updates various comments as per WordPress PHP Inline Documentation Standards.
See https://developer.wordpress.org/coding-standards/inline-documentation-standards/php/#5-inline-comments.
Follow-up to [56174], [56175], [56176], [56177], [56178], [56179], [56180], [56191], [56192], [56193].
Props costdev, audrasjb.
See #58459.
Built from https://develop.svn.wordpress.org/trunk@56194
git-svn-id: http://core.svn.wordpress.org/trunk@55706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-11 01:11:22 +02:00
/*
* Masonry v2 depended on jQuery . v3 does not . The older jquery - masonry handle is a shiv .
* It sets jQuery as a dependency , as the theme may have been implicitly loading it this way .
*/
2023-08-11 20:18:26 +02:00
$scripts -> add ( 'imagesloaded' , '/wp-includes/js/imagesloaded.min.js' , array (), '5.0.0' , 1 );
2020-07-02 15:10:08 +02:00
$scripts -> add ( 'masonry' , '/wp-includes/js/masonry.min.js' , array ( 'imagesloaded' ), '4.2.2' , 1 );
2021-06-08 16:59:59 +02:00
$scripts -> add ( 'jquery-masonry' , '/wp-includes/js/jquery/jquery.masonry.min.js' , array ( 'jquery' , 'masonry' ), '3.1.2b' , 1 );
2010-08-11 23:54:51 +02:00
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'thickbox' , '/wp-includes/js/thickbox/thickbox.js' , array ( 'jquery' ), '3.1-20121105' , 1 );
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'thickbox' ,
'thickboxL10n' ,
array (
2017-12-01 00:11:00 +01:00
'next' => __ ( 'Next >' ),
'prev' => __ ( '< Prev' ),
'image' => __ ( 'Image' ),
'of' => __ ( 'of' ),
'close' => __ ( 'Close' ),
'noiframes' => __ ( 'This feature requires inline frames. You have iframes disabled or your browser does not support them.' ),
'loadingAnimation' => includes_url ( 'js/thickbox/loadingAnimation.gif' ),
)
);
2010-01-15 23:11:12 +01:00
2022-03-24 21:07:05 +01:00
// Not used in core, replaced by imgAreaSelect.
$scripts -> add ( 'jcrop' , '/wp-includes/js/jcrop/jquery.Jcrop.min.js' , array ( 'jquery' ), '0.9.15' );
2009-04-20 20:18:39 +02:00
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'swfobject' , '/wp-includes/js/swfobject.js' , array (), '2.2-20120417' );
2011-07-29 21:21:21 +02:00
2017-09-22 22:10:48 +02:00
// Error messages for Plupload.
2011-07-29 21:21:21 +02:00
$uploader_l10n = array (
2017-12-01 00:11:00 +01:00
'queue_limit_exceeded' => __ ( 'You have attempted to queue too many files.' ),
2019-09-03 02:41:05 +02:00
/* translators: %s: File name. */
2017-12-01 00:11:00 +01:00
'file_exceeds_size_limit' => __ ( '%s exceeds the maximum upload size for this site.' ),
'zero_byte_file' => __ ( 'This file is empty. Please try another.' ),
2021-11-08 00:29:56 +01:00
'invalid_filetype' => __ ( 'Sorry, you are not allowed to upload this file type.' ),
2017-12-01 00:11:00 +01:00
'not_an_image' => __ ( 'This file is not an image. Please try another.' ),
'image_memory_exceeded' => __ ( 'Memory exceeded. Please try another smaller file.' ),
'image_dimensions_exceeded' => __ ( 'This is larger than the maximum size. Please try another.' ),
'default_error' => __ ( 'An error occurred in the upload. Please try again later.' ),
'missing_upload_url' => __ ( 'There was a configuration error. Please contact the server administrator.' ),
'upload_limit_exceeded' => __ ( 'You may only upload 1 file.' ),
2019-09-04 03:11:54 +02:00
'http_error' => __ ( 'Unexpected response from the server. The file may have been uploaded successfully. Check in the Media Library or reload the page.' ),
2021-11-16 21:01:00 +01:00
'http_error_image' => __ ( 'The server cannot process the image. This can happen if the server is busy or does not have enough resources to complete the task. Uploading a smaller image may help. Suggested maximum size is 2560 pixels.' ),
2017-12-01 00:11:00 +01:00
'upload_failed' => __ ( 'Upload failed.' ),
2019-09-03 02:41:05 +02:00
/* translators: 1: Opening link tag, 2: Closing link tag. */
2017-12-01 00:11:00 +01:00
'big_upload_failed' => __ ( 'Please try uploading this file with the %1$sbrowser uploader%2$s.' ),
2019-09-03 02:41:05 +02:00
/* translators: %s: File name. */
2017-12-01 00:11:00 +01:00
'big_upload_queued' => __ ( '%s exceeds the maximum upload size for the multi-file uploader when used in your browser.' ),
'io_error' => __ ( 'IO error.' ),
'security_error' => __ ( 'Security error.' ),
'file_cancelled' => __ ( 'File canceled.' ),
'upload_stopped' => __ ( 'Upload stopped.' ),
'dismiss' => __ ( 'Dismiss' ),
'crunching' => __ ( 'Crunching…' ),
2020-02-10 05:12:07 +01:00
'deleted' => __ ( 'moved to the Trash.' ),
2019-09-03 02:41:05 +02:00
/* translators: %s: File name. */
2017-12-01 00:11:00 +01:00
'error_uploading' => __ ( '“%s” has failed to upload.' ),
2020-07-04 01:15:03 +02:00
'unsupported_image' => __ ( 'This image cannot be displayed in a web browser. For best results convert it to JPEG before uploading.' ),
2021-06-24 21:12:00 +02:00
'noneditable_image' => __ ( 'This image cannot be processed by the web server. Convert it to JPEG or PNG before uploading.' ),
2021-05-26 03:40:58 +02:00
'file_url_copied' => __ ( 'The file URL has been copied to your clipboard' ),
2011-07-29 21:21:21 +02:00
);
2009-05-17 14:29:58 +02:00
2019-11-03 18:09:02 +01:00
$scripts -> add ( 'moxiejs' , " /wp-includes/js/plupload/moxie $suffix .js " , array (), '1.3.5' );
$scripts -> add ( 'plupload' , " /wp-includes/js/plupload/plupload $suffix .js " , array ( 'moxiejs' ), '2.1.9' );
2014-04-14 02:07:16 +02:00
// Back compat handles:
foreach ( array ( 'all' , 'html5' , 'flash' , 'silverlight' , 'html4' ) as $handle ) {
2019-11-03 18:09:02 +01:00
$scripts -> add ( " plupload- $handle " , false , array ( 'plupload' ), '2.1.1' );
2014-04-14 02:07:16 +02:00
}
2011-07-29 10:59:35 +02:00
2021-05-26 03:40:58 +02:00
$scripts -> add ( 'plupload-handlers' , " /wp-includes/js/plupload/handlers $suffix .js " , array ( 'clipboard' , 'jquery' , 'plupload' , 'underscore' , 'wp-a11y' , 'wp-i18n' ) );
2012-06-26 07:33:19 +02:00
did_action ( 'init' ) && $scripts -> localize ( 'plupload-handlers' , 'pluploadL10n' , $uploader_l10n );
2011-07-29 21:21:21 +02:00
2014-06-30 01:43:14 +02:00
$scripts -> add ( 'wp-plupload' , " /wp-includes/js/plupload/wp-plupload $suffix .js " , array ( 'plupload' , 'jquery' , 'json2' , 'media-models' ), false , 1 );
2012-06-26 07:33:19 +02:00
did_action ( 'init' ) && $scripts -> localize ( 'wp-plupload' , 'pluploadL10n' , $uploader_l10n );
2012-03-15 05:14:05 +01:00
2020-01-29 01:45:18 +01:00
// Keep 'swfupload' for back-compat.
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'swfupload' , '/wp-includes/js/swfupload/swfupload.js' , array (), '2201-20110113' );
2017-09-21 18:35:48 +02:00
$scripts -> add ( 'swfupload-all' , false , array ( 'swfupload' ), '2201' );
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'swfupload-handlers' , " /wp-includes/js/swfupload/handlers $suffix .js " , array ( 'swfupload-all' , 'jquery' ), '2201-20110524' );
2012-06-26 07:33:19 +02:00
did_action ( 'init' ) && $scripts -> localize ( 'swfupload-handlers' , 'swfuploadL10n' , $uploader_l10n );
2009-01-14 15:18:51 +01:00
2014-06-30 01:43:14 +02:00
$scripts -> add ( 'comment-reply' , " /wp-includes/js/comment-reply $suffix .js " , array (), false , 1 );
2023-07-28 19:17:24 +02:00
did_action ( 'init' ) && $scripts -> add_data ( 'comment-reply' , 'strategy' , 'async' );
2008-09-11 21:25:50 +02:00
2015-10-06 17:52:26 +02:00
$scripts -> add ( 'json2' , " /wp-includes/js/json2 $suffix .js " , array (), '2015-05-03' );
2015-02-24 00:04:24 +01:00
did_action ( 'init' ) && $scripts -> add_data ( 'json2' , 'conditional' , 'lt IE 8' );
2009-09-11 00:07:33 +02:00
2022-07-05 17:01:25 +02:00
$scripts -> add ( 'underscore' , " /wp-includes/js/underscore $dev_suffix .js " , array (), '1.13.4' , 1 );
2023-08-11 18:12:21 +02:00
$scripts -> add ( 'backbone' , " /wp-includes/js/backbone $dev_suffix .js " , array ( 'underscore' , 'jquery' ), '1.5.0' , 1 );
2013-05-26 08:43:13 +02:00
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'wp-util' , " /wp-includes/js/wp-util $suffix .js " , array ( 'underscore' , 'jquery' ), false , 1 );
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'wp-util' ,
'_wpUtilSettings' ,
array (
2017-12-01 00:11:00 +01:00
'ajax' => array (
'url' => admin_url ( 'admin-ajax.php' , 'relative' ),
),
)
);
2013-05-26 08:58:01 +02:00
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'wp-backbone' , " /wp-includes/js/wp-backbone $suffix .js " , array ( 'backbone' , 'wp-util' ), false , 1 );
2013-02-28 16:14:34 +01:00
2013-07-12 22:34:14 +02:00
$scripts -> add ( 'revisions' , " /wp-admin/js/revisions $suffix .js " , array ( 'wp-backbone' , 'jquery-ui-slider' , 'hoverIntent' ), false , 1 );
2012-08-23 00:24:20 +02:00
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'imgareaselect' , " /wp-includes/js/imgareaselect/jquery.imgareaselect $suffix .js " , array ( 'jquery' ), false , 1 );
2009-09-11 00:07:33 +02:00
2022-09-29 16:21:11 +02:00
$scripts -> add ( 'mediaelement' , false , array ( 'jquery' , 'mediaelement-core' , 'mediaelement-migrate' ), '4.2.17' , 1 );
$scripts -> add ( 'mediaelement-core' , " /wp-includes/js/mediaelement/mediaelement-and-player $suffix .js " , array (), '4.2.17' , 1 );
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'mediaelement-migrate' , " /wp-includes/js/mediaelement/mediaelement-migrate $suffix .js " , array (), false , 1 );
did_action ( 'init' ) && $scripts -> add_inline_script (
2018-08-17 03:51:36 +02:00
'mediaelement-core' ,
sprintf (
'var mejsL10n = %s;' ,
wp_json_encode (
2017-12-01 00:11:00 +01:00
array (
2018-12-14 02:32:39 +01:00
'language' => strtolower ( strtok ( determine_locale (), '_-' ) ),
2017-12-01 00:11:00 +01:00
'strings' => array (
2020-01-21 03:21:05 +01:00
'mejs.download-file' => __ ( 'Download File' ),
2017-12-01 00:11:00 +01:00
'mejs.install-flash' => __ ( 'You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/' ),
'mejs.fullscreen' => __ ( 'Fullscreen' ),
'mejs.play' => __ ( 'Play' ),
'mejs.pause' => __ ( 'Pause' ),
'mejs.time-slider' => __ ( 'Time Slider' ),
'mejs.time-help-text' => __ ( 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.' ),
2020-01-21 03:21:05 +01:00
'mejs.live-broadcast' => __ ( 'Live Broadcast' ),
2017-12-01 00:11:00 +01:00
'mejs.volume-help-text' => __ ( 'Use Up/Down Arrow keys to increase or decrease volume.' ),
'mejs.unmute' => __ ( 'Unmute' ),
'mejs.mute' => __ ( 'Mute' ),
'mejs.volume-slider' => __ ( 'Volume Slider' ),
'mejs.video-player' => __ ( 'Video Player' ),
'mejs.audio-player' => __ ( 'Audio Player' ),
2020-01-21 03:21:05 +01:00
'mejs.captions-subtitles' => __ ( 'Captions/Subtitles' ),
'mejs.captions-chapters' => __ ( 'Chapters' ),
'mejs.none' => __ ( 'None' ),
2017-12-01 00:11:00 +01:00
'mejs.afrikaans' => __ ( 'Afrikaans' ),
'mejs.albanian' => __ ( 'Albanian' ),
'mejs.arabic' => __ ( 'Arabic' ),
'mejs.belarusian' => __ ( 'Belarusian' ),
'mejs.bulgarian' => __ ( 'Bulgarian' ),
'mejs.catalan' => __ ( 'Catalan' ),
'mejs.chinese' => __ ( 'Chinese' ),
'mejs.chinese-simplified' => __ ( 'Chinese (Simplified)' ),
'mejs.chinese-traditional' => __ ( 'Chinese (Traditional)' ),
'mejs.croatian' => __ ( 'Croatian' ),
'mejs.czech' => __ ( 'Czech' ),
'mejs.danish' => __ ( 'Danish' ),
'mejs.dutch' => __ ( 'Dutch' ),
'mejs.english' => __ ( 'English' ),
'mejs.estonian' => __ ( 'Estonian' ),
'mejs.filipino' => __ ( 'Filipino' ),
'mejs.finnish' => __ ( 'Finnish' ),
'mejs.french' => __ ( 'French' ),
'mejs.galician' => __ ( 'Galician' ),
'mejs.german' => __ ( 'German' ),
'mejs.greek' => __ ( 'Greek' ),
'mejs.haitian-creole' => __ ( 'Haitian Creole' ),
'mejs.hebrew' => __ ( 'Hebrew' ),
'mejs.hindi' => __ ( 'Hindi' ),
'mejs.hungarian' => __ ( 'Hungarian' ),
'mejs.icelandic' => __ ( 'Icelandic' ),
'mejs.indonesian' => __ ( 'Indonesian' ),
'mejs.irish' => __ ( 'Irish' ),
'mejs.italian' => __ ( 'Italian' ),
'mejs.japanese' => __ ( 'Japanese' ),
'mejs.korean' => __ ( 'Korean' ),
'mejs.latvian' => __ ( 'Latvian' ),
'mejs.lithuanian' => __ ( 'Lithuanian' ),
'mejs.macedonian' => __ ( 'Macedonian' ),
'mejs.malay' => __ ( 'Malay' ),
'mejs.maltese' => __ ( 'Maltese' ),
'mejs.norwegian' => __ ( 'Norwegian' ),
'mejs.persian' => __ ( 'Persian' ),
'mejs.polish' => __ ( 'Polish' ),
'mejs.portuguese' => __ ( 'Portuguese' ),
'mejs.romanian' => __ ( 'Romanian' ),
'mejs.russian' => __ ( 'Russian' ),
'mejs.serbian' => __ ( 'Serbian' ),
'mejs.slovak' => __ ( 'Slovak' ),
'mejs.slovenian' => __ ( 'Slovenian' ),
'mejs.spanish' => __ ( 'Spanish' ),
'mejs.swahili' => __ ( 'Swahili' ),
'mejs.swedish' => __ ( 'Swedish' ),
'mejs.tagalog' => __ ( 'Tagalog' ),
'mejs.thai' => __ ( 'Thai' ),
'mejs.turkish' => __ ( 'Turkish' ),
'mejs.ukrainian' => __ ( 'Ukrainian' ),
'mejs.vietnamese' => __ ( 'Vietnamese' ),
'mejs.welsh' => __ ( 'Welsh' ),
'mejs.yiddish' => __ ( 'Yiddish' ),
),
)
)
2018-08-17 03:51:36 +02:00
),
'before'
2017-12-01 00:11:00 +01:00
);
2013-07-19 21:21:08 +02:00
2022-09-29 16:21:11 +02:00
$scripts -> add ( 'mediaelement-vimeo' , '/wp-includes/js/mediaelement/renderers/vimeo.min.js' , array ( 'mediaelement' ), '4.2.17' , 1 );
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'wp-mediaelement' , " /wp-includes/js/mediaelement/wp-mediaelement $suffix .js " , array ( 'mediaelement' ), false , 1 );
2015-09-18 22:00:27 +02:00
$mejs_settings = array (
2023-03-29 09:13:23 +02:00
'pluginPath' => includes_url ( 'js/mediaelement/' , 'relative' ),
'classPrefix' => 'mejs-' ,
'stretching' => 'responsive' ,
2023-02-07 17:00:42 +01:00
/** This filter is documented in wp-includes/media.php */
'audioShortcodeLibrary' => apply_filters ( 'wp_audio_shortcode_library' , 'mediaelement' ),
/** This filter is documented in wp-includes/media.php */
'videoShortcodeLibrary' => apply_filters ( 'wp_video_shortcode_library' , 'mediaelement' ),
2015-09-18 22:00:27 +02:00
);
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'mediaelement' ,
'_wpmejsSettings' ,
2015-09-18 22:00:27 +02:00
/**
2016-05-22 20:50:28 +02:00
* Filters the MediaElement configuration settings .
2015-09-18 22:00:27 +02:00
*
* @ since 4.4 . 0
*
* @ param array $mejs_settings MediaElement settings array .
*/
apply_filters ( 'mejs_settings' , $mejs_settings )
);
2013-03-16 06:25:44 +01:00
2017-09-22 01:04:45 +02:00
$scripts -> add ( 'wp-codemirror' , '/wp-includes/js/codemirror/codemirror.min.js' , array (), '5.29.1-alpha-ee20357' );
Editor: Add CodeMirror-powered code editor with syntax highlighting, linting, and auto-completion.
* Code editor is integrated into the Theme/Plugin Editor, Additional CSS in Customizer, and Custom HTML widget. Code editor is not yet integrated into the post editor, and it may not be until accessibility concerns are addressed.
* The CodeMirror component in the Custom HTML widget is integrated in a similar way to TinyMCE being integrated into the Text widget, adopting the same approach for integrating dynamic JavaScript-initialized fields.
* Linting is performed for JS, CSS, HTML, and JSON via JSHint, CSSLint, HTMLHint, and JSONLint respectively. Linting is not yet supported for PHP.
* When user lacks `unfiltered_html` the capability, the Custom HTML widget will report any Kses-invalid elements and attributes as errors via a custom Kses rule for HTMLHint.
* When linting errors are detected, the user will be prevented from saving the code until the errors are fixed, reducing instances of broken websites.
* The placeholder value is removed from Custom CSS in favor of a fleshed-out section description which now auto-expands when the CSS field is empty. See #39892.
* The CodeMirror library is included as `wp.CodeMirror` to prevent conflicts with any existing `CodeMirror` global.
* An `wp.codeEditor.initialize()` API in JS is provided to convert a `textarea` into CodeMirror, with a `wp_enqueue_code_editor()` function in PHP to manage enqueueing the assets and settings needed to edit a given type of code.
* A user preference is added to manage whether or not "syntax highlighting" is enabled. The feature is opt-out, being enabled by default.
* Allowed file extensions in the theme and plugin editors have been updated to include formats which CodeMirror has modes for: `conf`, `css`, `diff`, `patch`, `html`, `htm`, `http`, `js`, `json`, `jsx`, `less`, `md`, `php`, `phtml`, `php3`, `php4`, `php5`, `php7`, `phps`, `scss`, `sass`, `sh`, `bash`, `sql`, `svg`, `xml`, `yml`, `yaml`, `txt`.
Props westonruter, georgestephanis, obenland, melchoyce, pixolin, mizejewski, michelleweber, afercia, grahamarmfield, samikeijonen, rianrietveld, iseulde.
See #38707.
Fixes #12423, #39892.
Built from https://develop.svn.wordpress.org/trunk@41376
git-svn-id: http://core.svn.wordpress.org/trunk@41209 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-13 08:08:47 +02:00
$scripts -> add ( 'csslint' , '/wp-includes/js/codemirror/csslint.js' , array (), '1.0.5' );
2019-02-21 22:19:50 +01:00
$scripts -> add ( 'esprima' , '/wp-includes/js/codemirror/esprima.js' , array (), '4.0.0' );
$scripts -> add ( 'jshint' , '/wp-includes/js/codemirror/fakejshint.js' , array ( 'esprima' ), '2.9.5' );
Editor: Add CodeMirror-powered code editor with syntax highlighting, linting, and auto-completion.
* Code editor is integrated into the Theme/Plugin Editor, Additional CSS in Customizer, and Custom HTML widget. Code editor is not yet integrated into the post editor, and it may not be until accessibility concerns are addressed.
* The CodeMirror component in the Custom HTML widget is integrated in a similar way to TinyMCE being integrated into the Text widget, adopting the same approach for integrating dynamic JavaScript-initialized fields.
* Linting is performed for JS, CSS, HTML, and JSON via JSHint, CSSLint, HTMLHint, and JSONLint respectively. Linting is not yet supported for PHP.
* When user lacks `unfiltered_html` the capability, the Custom HTML widget will report any Kses-invalid elements and attributes as errors via a custom Kses rule for HTMLHint.
* When linting errors are detected, the user will be prevented from saving the code until the errors are fixed, reducing instances of broken websites.
* The placeholder value is removed from Custom CSS in favor of a fleshed-out section description which now auto-expands when the CSS field is empty. See #39892.
* The CodeMirror library is included as `wp.CodeMirror` to prevent conflicts with any existing `CodeMirror` global.
* An `wp.codeEditor.initialize()` API in JS is provided to convert a `textarea` into CodeMirror, with a `wp_enqueue_code_editor()` function in PHP to manage enqueueing the assets and settings needed to edit a given type of code.
* A user preference is added to manage whether or not "syntax highlighting" is enabled. The feature is opt-out, being enabled by default.
* Allowed file extensions in the theme and plugin editors have been updated to include formats which CodeMirror has modes for: `conf`, `css`, `diff`, `patch`, `html`, `htm`, `http`, `js`, `json`, `jsx`, `less`, `md`, `php`, `phtml`, `php3`, `php4`, `php5`, `php7`, `phps`, `scss`, `sass`, `sh`, `bash`, `sql`, `svg`, `xml`, `yml`, `yaml`, `txt`.
Props westonruter, georgestephanis, obenland, melchoyce, pixolin, mizejewski, michelleweber, afercia, grahamarmfield, samikeijonen, rianrietveld, iseulde.
See #38707.
Fixes #12423, #39892.
Built from https://develop.svn.wordpress.org/trunk@41376
git-svn-id: http://core.svn.wordpress.org/trunk@41209 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-13 08:08:47 +02:00
$scripts -> add ( 'jsonlint' , '/wp-includes/js/codemirror/jsonlint.js' , array (), '1.6.2' );
$scripts -> add ( 'htmlhint' , '/wp-includes/js/codemirror/htmlhint.js' , array (), '0.9.14-xwp' );
$scripts -> add ( 'htmlhint-kses' , '/wp-includes/js/codemirror/htmlhint-kses.js' , array ( 'htmlhint' ) );
2017-10-23 22:38:47 +02:00
$scripts -> add ( 'code-editor' , " /wp-admin/js/code-editor $suffix .js " , array ( 'jquery' , 'wp-codemirror' , 'underscore' ) );
2023-02-23 00:39:17 +01:00
$scripts -> add ( 'wp-theme-plugin-editor' , " /wp-admin/js/theme-plugin-editor $suffix .js " , array ( 'common' , 'wp-util' , 'wp-sanitize' , 'jquery' , 'jquery-ui-core' , 'wp-a11y' , 'underscore' ), false , 1 );
2020-07-06 21:35:07 +02:00
$scripts -> set_translations ( 'wp-theme-plugin-editor' );
Editor: Add CodeMirror-powered code editor with syntax highlighting, linting, and auto-completion.
* Code editor is integrated into the Theme/Plugin Editor, Additional CSS in Customizer, and Custom HTML widget. Code editor is not yet integrated into the post editor, and it may not be until accessibility concerns are addressed.
* The CodeMirror component in the Custom HTML widget is integrated in a similar way to TinyMCE being integrated into the Text widget, adopting the same approach for integrating dynamic JavaScript-initialized fields.
* Linting is performed for JS, CSS, HTML, and JSON via JSHint, CSSLint, HTMLHint, and JSONLint respectively. Linting is not yet supported for PHP.
* When user lacks `unfiltered_html` the capability, the Custom HTML widget will report any Kses-invalid elements and attributes as errors via a custom Kses rule for HTMLHint.
* When linting errors are detected, the user will be prevented from saving the code until the errors are fixed, reducing instances of broken websites.
* The placeholder value is removed from Custom CSS in favor of a fleshed-out section description which now auto-expands when the CSS field is empty. See #39892.
* The CodeMirror library is included as `wp.CodeMirror` to prevent conflicts with any existing `CodeMirror` global.
* An `wp.codeEditor.initialize()` API in JS is provided to convert a `textarea` into CodeMirror, with a `wp_enqueue_code_editor()` function in PHP to manage enqueueing the assets and settings needed to edit a given type of code.
* A user preference is added to manage whether or not "syntax highlighting" is enabled. The feature is opt-out, being enabled by default.
* Allowed file extensions in the theme and plugin editors have been updated to include formats which CodeMirror has modes for: `conf`, `css`, `diff`, `patch`, `html`, `htm`, `http`, `js`, `json`, `jsx`, `less`, `md`, `php`, `phtml`, `php3`, `php4`, `php5`, `php7`, `phps`, `scss`, `sass`, `sh`, `bash`, `sql`, `svg`, `xml`, `yml`, `yaml`, `txt`.
Props westonruter, georgestephanis, obenland, melchoyce, pixolin, mizejewski, michelleweber, afercia, grahamarmfield, samikeijonen, rianrietveld, iseulde.
See #38707.
Fixes #12423, #39892.
Built from https://develop.svn.wordpress.org/trunk@41376
git-svn-id: http://core.svn.wordpress.org/trunk@41209 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-09-13 08:08:47 +02:00
2016-02-29 21:43:26 +01:00
$scripts -> add ( 'wp-playlist' , " /wp-includes/js/mediaelement/wp-playlist $suffix .js " , array ( 'wp-util' , 'backbone' , 'mediaelement' ), false , 1 );
2014-02-24 19:08:16 +01:00
2014-06-30 01:43:14 +02:00
$scripts -> add ( 'zxcvbn-async' , " /wp-includes/js/zxcvbn-async $suffix .js " , array (), '1.0' );
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'zxcvbn-async' ,
'_zxcvbnSettings' ,
array (
2017-12-01 00:11:00 +01:00
'src' => empty ( $guessed_url ) ? includes_url ( '/js/zxcvbn.min.js' ) : $scripts -> base_url . '/wp-includes/js/zxcvbn.min.js' ,
)
);
2013-08-28 18:09:10 +02:00
2020-06-23 20:54:16 +02:00
$scripts -> add ( 'password-strength-meter' , " /wp-admin/js/password-strength-meter $suffix .js " , array ( 'jquery' , 'zxcvbn-async' ), false , 1 );
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'password-strength-meter' ,
'pwsL10n' ,
array (
2017-12-01 00:11:00 +01:00
'unknown' => _x ( 'Password strength unknown' , 'password strength' ),
'short' => _x ( 'Very weak' , 'password strength' ),
'bad' => _x ( 'Weak' , 'password strength' ),
'good' => _x ( 'Medium' , 'password strength' ),
'strong' => _x ( 'Strong' , 'password strength' ),
'mismatch' => _x ( 'Mismatch' , 'password mismatch' ),
)
);
General: Remove “whitelist” and “blacklist” in favor of more clear and inclusive language.
“The WordPress open source community cares about diversity. We strive to maintain a welcoming environment where everyone can feel included.”
With this commit, all occurrences of “whitelist” and “blacklist” (with the single exception of the `$new_whitelist_options` global variable) are removed. A new ticket has been opened to explore renaming the `$new_whitelist_options` variable (#50434).
Changing to more specific names or rewording sentences containing these terms not only makes the code more inclusive, but also helps provide clarity. These terms are often ambiguous. What is being blocked or allowed is not always immediately clear. This can make it more difficult for non-native English speakers to read through the codebase.
Words matter. If one contributor feels more welcome because these terms are removed, this was worth the effort.
Props strangerstudios, jorbin, desrosj, joemcgill, timothyblynjacobs, ocean90, ayeshrajans, davidbaumwald, earnjam.
See #48900, #50434.
Fixes #50413.
Built from https://develop.svn.wordpress.org/trunk@48121
git-svn-id: http://core.svn.wordpress.org/trunk@47890 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-06-22 19:26:13 +02:00
$scripts -> set_translations ( 'password-strength-meter' );
2010-10-27 08:57:10 +02:00
Upgrade/Install: Show/hide toggle on password fields.
Add a show/hide toggle for new passwords in initial user creation and database access during install and setup process using the same model as on user profiles. Add a new password toggle script. Change setup config table to two columns, matching the install table layout.
Props xmarcos, matt, markjaquith, nazgul, akbigdog, intoxination, rob1n, MichaelH, empireoflight, rmccue, markoheijnen, r0uter, amansurov, bi0xid, DrewAPicture, Narthur, wpnook, markparnell, costdev, clorith, ryokuhi, sabernhardt, bgoewert, ironprogrammer, adeltahri, joedolson, mukesh27, audrasjb, sergeybiryukov.
Fixes #3534.
Built from https://develop.svn.wordpress.org/trunk@56008
git-svn-id: http://core.svn.wordpress.org/trunk@55520 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-06-24 01:09:29 +02:00
$scripts -> add ( 'password-toggle' , " /wp-admin/js/password-toggle $suffix .js " , array (), false , 1 );
$scripts -> set_translations ( 'password-toggle' );
2020-11-09 19:05:08 +01:00
$scripts -> add ( 'application-passwords' , " /wp-admin/js/application-passwords $suffix .js " , array ( 'jquery' , 'wp-util' , 'wp-api-request' , 'wp-date' , 'wp-i18n' , 'wp-hooks' ), false , 1 );
REST API: Introduce Application Passwords for API authentication.
In WordPress 4.4 the REST API was first introduced. A few releases later in WordPress 4.7, the Content API endpoints were added, paving the way for Gutenberg and countless in-site experiences. In the intervening years, numerous plugins have built on top of the REST API. Many developers shared a common frustration, the lack of external authentication to the REST API.
This commit introduces Application Passwords to allow users to connect to external applications to their WordPress website. Users can generate individual passwords for each application, allowing for easy revocation and activity monitoring. An authorization flow is introduced to make the connection flow simple for users and application developers.
Application Passwords uses Basic Authentication, and by default is only available over an SSL connection.
Props georgestephanis, kasparsd, timothyblynjacobs, afercia, akkspro, andraganescu, arippberger, aristath, austyfrosty, ayesh, batmoo, bradyvercher, brianhenryie, helen, ipstenu, jeffmatson, jeffpaul, joostdevalk, joshlevinson, kadamwhite, kjbenk, koke, michael-arestad, Otto42, pekz0r, salzano, spacedmonkey, valendesigns.
Fixes #42790.
Built from https://develop.svn.wordpress.org/trunk@49109
git-svn-id: http://core.svn.wordpress.org/trunk@48871 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-10-09 00:14:06 +02:00
$scripts -> set_translations ( 'application-passwords' );
$scripts -> add ( 'auth-app' , " /wp-admin/js/auth-app $suffix .js " , array ( 'jquery' , 'wp-api-request' , 'wp-i18n' , 'wp-hooks' ), false , 1 );
$scripts -> set_translations ( 'auth-app' );
2014-12-16 10:15:23 +01:00
$scripts -> add ( 'user-profile' , " /wp-admin/js/user-profile $suffix .js " , array ( 'jquery' , 'password-strength-meter' , 'wp-util' ), false , 1 );
2020-07-01 22:38:01 +02:00
$scripts -> set_translations ( 'user-profile' );
Users: enable admins to send users a reset password link.
Add a feature so Admins can send users a 'password reset' email. This doesn't change the password or force a password change. It only emails the user the password reset link.
The feature appears in several places:
* A "Send Reset Link" button on user profile screen.
* A "Send password reset" option in the user list bulk action dropdown.
* A "Send password reset" quick action when hovering over a username in the user list.
Props Ipstenu, DrewAPicture, eventualo, wonderboymusic, knutsp, ericlewis, afercia, JoshuaWold, johnbillion, paaljoachim, hedgefield.
Fixes #34281.
Built from https://develop.svn.wordpress.org/trunk@50129
git-svn-id: http://core.svn.wordpress.org/trunk@49808 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-02-01 23:13:03 +01:00
$user_id = isset ( $_GET [ 'user_id' ] ) ? ( int ) $_GET [ 'user_id' ] : 0 ;
did_action ( 'init' ) && $scripts -> localize (
'user-profile' ,
'userProfileL10n' ,
array (
2021-02-02 19:04:03 +01:00
'user_id' => $user_id ,
2022-01-19 00:47:01 +01:00
'nonce' => wp_installing () ? '' : wp_create_nonce ( 'reset-password-for-' . $user_id ),
Users: enable admins to send users a reset password link.
Add a feature so Admins can send users a 'password reset' email. This doesn't change the password or force a password change. It only emails the user the password reset link.
The feature appears in several places:
* A "Send Reset Link" button on user profile screen.
* A "Send password reset" option in the user list bulk action dropdown.
* A "Send password reset" quick action when hovering over a username in the user list.
Props Ipstenu, DrewAPicture, eventualo, wonderboymusic, knutsp, ericlewis, afercia, JoshuaWold, johnbillion, paaljoachim, hedgefield.
Fixes #34281.
Built from https://develop.svn.wordpress.org/trunk@50129
git-svn-id: http://core.svn.wordpress.org/trunk@49808 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-02-01 23:13:03 +01:00
)
);
2015-07-14 00:35:24 +02:00
2014-07-08 02:30:14 +02:00
$scripts -> add ( 'language-chooser' , " /wp-admin/js/language-chooser $suffix .js " , array ( 'jquery' ), false , 1 );
2010-10-29 09:25:58 +02:00
2012-06-05 20:51:33 +02:00
$scripts -> add ( 'user-suggest' , " /wp-admin/js/user-suggest $suffix .js " , array ( 'jquery-ui-autocomplete' ), false , 1 );
2012-03-24 05:54:58 +01:00
2019-12-10 02:03:02 +01:00
$scripts -> add ( 'admin-bar' , " /wp-includes/js/admin-bar $suffix .js " , array ( 'hoverintent-js' ), false , 1 );
2010-11-18 08:59:05 +01:00
Script Loader: Switch to JavaScript translations.
Update JavaScript files for tag suggestions and the TinyMCE link plugin to use client side translations. This allows for `_n()` to be used for strings requiring singular and plural versions in which the correct form is only known client side.
Props audrasjb, chaion07, costdev, hellofromtonya, johnbillion, marybaum, nicolefurlan, oglekler, rebasaurus, rsiddharth, sergeybiryukov, shaampk1, shahariaazam, swissspidy, tobifjellner.
Fixes #48244.
Built from https://develop.svn.wordpress.org/trunk@57654
git-svn-id: http://core.svn.wordpress.org/trunk@57155 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-02-18 23:16:14 +01:00
$scripts -> add ( 'wplink' , " /wp-includes/js/wplink $suffix .js " , array ( 'common' , 'jquery' , 'wp-a11y' , 'wp-i18n' ), false , 1 );
$scripts -> set_translations ( 'wplink' );
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'wplink' ,
'wpLinkL10n' ,
array (
2017-12-01 00:11:00 +01:00
'title' => __ ( 'Insert/edit link' ),
'update' => __ ( 'Update' ),
'save' => __ ( 'Add Link' ),
'noTitle' => __ ( '(no title)' ),
'noMatchesFound' => __ ( 'No results found.' ),
'linkSelected' => __ ( 'Link selected.' ),
'linkInserted' => __ ( 'Link inserted.' ),
2019-12-18 02:15:03 +01:00
/* translators: Minimum input length in characters to start searching posts in the "Insert/edit link" modal. */
'minInputLength' => ( int ) _x ( '3' , 'minimum input length for searching post links' ),
2017-12-01 00:11:00 +01:00
)
);
2010-11-18 08:59:05 +01:00
2014-06-30 01:43:14 +02:00
$scripts -> add ( 'wpdialogs' , " /wp-includes/js/wpdialog $suffix .js " , array ( 'jquery-ui-dialog' ), false , 1 );
2010-11-17 19:47:34 +01:00
2015-06-19 12:35:26 +02:00
$scripts -> add ( 'word-count' , " /wp-admin/js/word-count $suffix .js " , array (), false , 1 );
2011-08-03 12:19:00 +02:00
2012-11-21 17:46:32 +01:00
$scripts -> add ( 'media-upload' , " /wp-admin/js/media-upload $suffix .js " , array ( 'thickbox' , 'shortcode' ), false , 1 );
2011-08-03 12:19:00 +02:00
2022-02-04 11:52:08 +01:00
$scripts -> add ( 'hoverIntent' , " /wp-includes/js/hoverIntent $suffix .js " , array ( 'jquery' ), '1.10.2' , 1 );
2011-11-21 20:14:22 +01:00
2019-12-10 02:03:02 +01:00
// JS-only version of hoverintent (no dependencies).
2019-12-10 02:34:01 +01:00
$scripts -> add ( 'hoverintent-js' , '/wp-includes/js/hoverintent-js.min.js' , array (), '2.2.1' , 1 );
2019-12-10 02:03:02 +01:00
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'customize-base' , " /wp-includes/js/customize-base $suffix .js " , array ( 'jquery' , 'json2' , 'underscore' ), false , 1 );
$scripts -> add ( 'customize-loader' , " /wp-includes/js/customize-loader $suffix .js " , array ( 'customize-base' ), false , 1 );
$scripts -> add ( 'customize-preview' , " /wp-includes/js/customize-preview $suffix .js " , array ( 'wp-a11y' , 'customize-base' ), false , 1 );
$scripts -> add ( 'customize-models' , '/wp-includes/js/customize-models.js' , array ( 'underscore' , 'backbone' ), false , 1 );
$scripts -> add ( 'customize-views' , '/wp-includes/js/customize-views.js' , array ( 'jquery' , 'underscore' , 'imgareaselect' , 'customize-models' , 'media-editor' , 'media-views' ), false , 1 );
2017-10-12 06:01:46 +02:00
$scripts -> add ( 'customize-controls' , " /wp-admin/js/customize-controls $suffix .js " , array ( 'customize-base' , 'wp-a11y' , 'wp-util' , 'jquery-ui-core' ), false , 1 );
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'customize-controls' ,
'_wpCustomizeControlsL10n' ,
array (
2017-12-01 00:11:00 +01:00
'activate' => __ ( 'Activate & Publish' ),
'save' => __ ( 'Save & Publish' ), // @todo Remove as not required.
'publish' => __ ( 'Publish' ),
'published' => __ ( 'Published' ),
'saveDraft' => __ ( 'Save Draft' ),
'draftSaved' => __ ( 'Draft Saved' ),
'updating' => __ ( 'Updating' ),
'schedule' => _x ( 'Schedule' , 'customizer changeset action/button label' ),
'scheduled' => _x ( 'Scheduled' , 'customizer changeset status' ),
'invalid' => __ ( 'Invalid' ),
'saveBeforeShare' => __ ( 'Please save your changes in order to share the preview.' ),
'futureDateError' => __ ( 'You must supply a future date to schedule.' ),
'saveAlert' => __ ( 'The changes you made will be lost if you navigate away from this page.' ),
'saved' => __ ( 'Saved' ),
'cancel' => __ ( 'Cancel' ),
'close' => __ ( 'Close' ),
'action' => __ ( 'Action' ),
'discardChanges' => __ ( 'Discard changes' ),
2018-02-19 03:13:32 +01:00
'cheatin' => __ ( 'Something went wrong.' ),
'notAllowedHeading' => __ ( 'You need a higher level of permission.' ),
2017-12-01 00:11:00 +01:00
'notAllowed' => __ ( 'Sorry, you are not allowed to customize this site.' ),
'previewIframeTitle' => __ ( 'Site Preview' ),
'loginIframeTitle' => __ ( 'Session expired' ),
'collapseSidebar' => _x ( 'Hide Controls' , 'label for hide controls button without length constraints' ),
'expandSidebar' => _x ( 'Show Controls' , 'label for hide controls button without length constraints' ),
'untitledBlogName' => __ ( '(Untitled)' ),
'unknownRequestFail' => __ ( 'Looks like something’s gone wrong. Wait a couple seconds, and then try again.' ),
'themeDownloading' => __ ( 'Downloading your new theme…' ),
'themePreviewWait' => __ ( 'Setting up your live preview. This may take a bit.' ),
'revertingChanges' => __ ( 'Reverting unpublished changes…' ),
2019-05-26 17:19:50 +02:00
'trashConfirm' => __ ( 'Are you sure you want to discard your unpublished changes?' ),
2017-12-01 00:11:00 +01:00
/* translators: %s: Display name of the user who has taken over the changeset in customizer. */
'takenOverMessage' => __ ( '%s has taken over and is currently customizing.' ),
2019-09-03 02:41:05 +02:00
/* translators: %s: URL to the Customizer to load the autosaved version. */
2017-12-01 00:11:00 +01:00
'autosaveNotice' => __ ( 'There is a more recent autosave of your changes than the one you are previewing. <a href="%s">Restore the autosave</a>' ),
Administration: Replace contracted verb forms for better consistency.
This changeset replaces contracted verb forms like `doesn't`, `can't`, or `isn't` with non-contracted forms like `does not`, `cannot`, or `is not`, for better consistency across the WordPress administration. It also updates some corresponding unit tests strings.
Props Presskopp, socalchristina, aandrewdixon, francina, SergeyBiryukov, JeffPaul, audrasjb, hellofromTonya.
Fixes #38913.
See #39176.
Built from https://develop.svn.wordpress.org/trunk@52978
git-svn-id: http://core.svn.wordpress.org/trunk@52567 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-03-22 17:25:03 +01:00
'videoHeaderNotice' => __ ( 'This theme does not support video headers on this page. Navigate to the front page or another page that supports video headers.' ),
2020-01-29 01:45:18 +01:00
// Used for overriding the file types allowed in Plupload.
2017-12-01 00:11:00 +01:00
'allowedFiles' => __ ( 'Allowed Files' ),
'customCssError' => array (
2019-09-03 02:41:05 +02:00
/* translators: %d: Error count. */
2017-12-01 00:11:00 +01:00
'singular' => _n ( 'There is %d error which must be fixed before you can save.' , 'There are %d errors which must be fixed before you can save.' , 1 ),
2019-09-03 02:41:05 +02:00
/* translators: %d: Error count. */
2020-01-29 01:45:18 +01:00
'plural' => _n ( 'There is %d error which must be fixed before you can save.' , 'There are %d errors which must be fixed before you can save.' , 2 ),
// @todo This is lacking, as some languages have a dedicated dual form. For proper handling of plurals in JS, see #20491.
2017-12-01 00:11:00 +01:00
),
'pageOnFrontError' => __ ( 'Homepage and posts page must be different.' ),
'saveBlockedError' => array (
2019-09-03 02:41:05 +02:00
/* translators: %s: Number of invalid settings. */
2017-12-01 00:11:00 +01:00
'singular' => _n ( 'Unable to save due to %s invalid setting.' , 'Unable to save due to %s invalid settings.' , 1 ),
2019-09-03 02:41:05 +02:00
/* translators: %s: Number of invalid settings. */
2020-01-29 01:45:18 +01:00
'plural' => _n ( 'Unable to save due to %s invalid setting.' , 'Unable to save due to %s invalid settings.' , 2 ),
// @todo This is lacking, as some languages have a dedicated dual form. For proper handling of plurals in JS, see #20491.
2017-12-01 00:11:00 +01:00
),
'scheduleDescription' => __ ( 'Schedule your customization changes to publish ("go live") at a future date.' ),
Administration: Replace contracted verb forms for better consistency.
This changeset replaces contracted verb forms like `doesn't`, `can't`, or `isn't` with non-contracted forms like `does not`, `cannot`, or `is not`, for better consistency across the WordPress administration. It also updates some corresponding unit tests strings.
Props Presskopp, socalchristina, aandrewdixon, francina, SergeyBiryukov, JeffPaul, audrasjb, hellofromTonya.
Fixes #38913.
See #39176.
Built from https://develop.svn.wordpress.org/trunk@52978
git-svn-id: http://core.svn.wordpress.org/trunk@52567 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-03-22 17:25:03 +01:00
'themePreviewUnavailable' => __ ( 'Sorry, you cannot preview new themes when you have changes scheduled or saved as a draft. Please publish your changes, or wait until they publish to preview new themes.' ),
2017-12-01 00:11:00 +01:00
'themeInstallUnavailable' => sprintf (
2019-09-03 02:41:05 +02:00
/* translators: %s: URL to Add Themes admin screen. */
Administration: Replace contracted verb forms for better consistency.
This changeset replaces contracted verb forms like `doesn't`, `can't`, or `isn't` with non-contracted forms like `does not`, `cannot`, or `is not`, for better consistency across the WordPress administration. It also updates some corresponding unit tests strings.
Props Presskopp, socalchristina, aandrewdixon, francina, SergeyBiryukov, JeffPaul, audrasjb, hellofromTonya.
Fixes #38913.
See #39176.
Built from https://develop.svn.wordpress.org/trunk@52978
git-svn-id: http://core.svn.wordpress.org/trunk@52567 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-03-22 17:25:03 +01:00
__ ( 'You will not be able to install new themes from here yet since your install requires SFTP credentials. For now, please <a href="%s">add themes in the admin</a>.' ),
2017-12-01 00:11:00 +01:00
esc_url ( admin_url ( 'theme-install.php' ) )
),
'publishSettings' => __ ( 'Publish Settings' ),
'invalidDate' => __ ( 'Invalid date.' ),
'invalidValue' => __ ( 'Invalid value.' ),
2022-03-29 21:10:14 +02:00
'blockThemeNotification' => sprintf (
2022-03-29 21:57:16 +02:00
/* translators: 1: Link to Site Editor documentation on HelpHub, 2: HTML button. */
2022-11-10 12:33:14 +01:00
__ ( 'Hurray! Your theme supports site editing with blocks. <a href="%1$s">Tell me more</a>. %2$s' ),
2023-02-23 11:38:21 +01:00
__ ( 'https://wordpress.org/documentation/article/site-editor/' ),
2022-03-29 21:10:14 +02:00
sprintf (
2022-03-29 21:57:16 +02:00
'<button type="button" data-action="%1$s" class="button switch-to-editor">%2$s</button>' ,
2022-03-29 21:10:14 +02:00
esc_url ( admin_url ( 'site-editor.php' ) ),
2022-03-29 21:57:16 +02:00
__ ( 'Use Site Editor' )
2022-03-29 21:10:14 +02:00
)
),
2017-12-01 00:11:00 +01:00
)
);
2016-02-19 19:41:28 +01:00
$scripts -> add ( 'customize-selective-refresh' , " /wp-includes/js/customize-selective-refresh $suffix .js " , array ( 'jquery' , 'wp-util' , 'customize-preview' ), false , 1 );
2012-02-25 05:12:43 +01:00
2014-03-13 20:41:14 +01:00
$scripts -> add ( 'customize-widgets' , " /wp-admin/js/customize-widgets $suffix .js " , array ( 'jquery' , 'jquery-ui-sortable' , 'jquery-ui-droppable' , 'wp-backbone' , 'customize-controls' ), false , 1 );
2016-03-21 22:59:29 +01:00
$scripts -> add ( 'customize-preview-widgets' , " /wp-includes/js/customize-preview-widgets $suffix .js " , array ( 'jquery' , 'wp-util' , 'customize-preview' , 'customize-selective-refresh' ), false , 1 );
2014-03-13 20:41:14 +01:00
2019-09-04 19:13:21 +02:00
$scripts -> add ( 'customize-nav-menus' , " /wp-admin/js/customize-nav-menus $suffix .js " , array ( 'jquery' , 'wp-backbone' , 'customize-controls' , 'accordion' , 'nav-menu' , 'wp-sanitize' ), false , 1 );
2016-03-21 22:59:29 +01:00
$scripts -> add ( 'customize-preview-nav-menus' , " /wp-includes/js/customize-preview-nav-menus $suffix .js " , array ( 'jquery' , 'wp-util' , 'customize-preview' , 'customize-selective-refresh' ), false , 1 );
Add menu management to the Customizer.
This brings in the Menu Customizer plugin: https://wordpress.org/plugins/menu-customizer/.
props celloexpressions, westonruter, valendesigns, voldemortensen, ocean90, adamsilverstein, kucrut, jorbin, designsimply, afercia, davidakennedy, obenland.
see #32576.
Built from https://develop.svn.wordpress.org/trunk@32806
git-svn-id: http://core.svn.wordpress.org/trunk@32777 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-17 00:08:26 +02:00
Themes: Improve a11y and extendability of custom video headers.
This adds play/pause controls to video headers, along with voice
assistance, using `wp.a11y.speak`, to make custom video headers more
accessible. To make styling the play/pause button easier for themes,
CSS has been omitted from the default implementation.
This also includes a refactor of the `wp.customHeader` code to introduce
a `BaseHandler` class, which can be extended by plugins and themes to modify
or enhance the default video handlers.
Props davidakennedy, afercia, bradyvercher, joemcgill, adamsilverstein, rianrietveld.
Fixes #38678.
Built from https://develop.svn.wordpress.org/trunk@39272
git-svn-id: http://core.svn.wordpress.org/trunk@39212 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-17 00:26:31 +01:00
$scripts -> add ( 'wp-custom-header' , " /wp-includes/js/wp-custom-header $suffix .js " , array ( 'wp-a11y' ), false , 1 );
2016-10-27 23:51:31 +02:00
2013-02-14 23:58:04 +01:00
$scripts -> add ( 'accordion' , " /wp-admin/js/accordion $suffix .js " , array ( 'jquery' ), false , 1 );
2014-06-30 01:43:14 +02:00
$scripts -> add ( 'shortcode' , " /wp-includes/js/shortcode $suffix .js " , array ( 'underscore' ), false , 1 );
2015-04-14 17:31:28 +02:00
$scripts -> add ( 'media-models' , " /wp-includes/js/media-models $suffix .js " , array ( 'wp-backbone' ), false , 1 );
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'media-models' ,
'_wpMediaModelsL10n' ,
array (
2017-12-01 00:11:00 +01:00
'settings' => array (
'ajaxurl' => admin_url ( 'admin-ajax.php' , 'relative' ),
'post' => array ( 'id' => 0 ),
),
)
);
2012-10-12 18:02:45 +02:00
2023-08-03 21:22:22 +02:00
$scripts -> add ( 'wp-embed' , " /wp-includes/js/wp-embed $suffix .js " );
did_action ( 'init' ) && $scripts -> add_data ( 'wp-embed' , 'strategy' , 'defer' );
Embeds: Add oEmbed provider support.
For the past 6 years, WordPress has operated as an oEmbed consumer, allowing users to easily embed content from other sites. By adding oEmbed provider support, this allows any oEmbed consumer to embed posts from WordPress sites.
In addition to creating an oEmbed provider, WordPress' oEmbed consumer code has been enhanced to work with any site that provides oEmbed data (as long as it matches some strict security rules), and provides a preview from within the post editor.
For security, embeds appear within a sandboxed iframe - the iframe content is a template that can be styled or replaced entirely by the theme on the provider site.
Props swissspidy, pento, melchoyce, netweb, pfefferle, johnbillion, extendwings, davidbinda, danielbachhuber, SergeyBiryukov, afercia
Fixes #32522.
Built from https://develop.svn.wordpress.org/trunk@34903
git-svn-id: http://core.svn.wordpress.org/trunk@34868 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-07 12:36:25 +02:00
Docs: Replace multiple single line comments with multi-line comments.
This changeset updates various comments as per WordPress PHP Inline Documentation Standards.
See https://developer.wordpress.org/coding-standards/inline-documentation-standards/php/#5-inline-comments.
Follow-up to [56174], [56175], [56176], [56177], [56178], [56179], [56180], [56191], [56192], [56193].
Props costdev, audrasjb.
See #58459.
Built from https://develop.svn.wordpress.org/trunk@56194
git-svn-id: http://core.svn.wordpress.org/trunk@55706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-11 01:11:22 +02:00
/*
* To enqueue media - views or media - editor , call wp_enqueue_media () .
* Both rely on numerous settings , styles , and templates to operate correctly .
*/
2020-07-02 13:11:06 +02:00
$scripts -> add ( 'media-views' , " /wp-includes/js/media-views $suffix .js " , array ( 'utils' , 'media-models' , 'wp-plupload' , 'jquery-ui-sortable' , 'wp-mediaelement' , 'wp-api-request' , 'wp-a11y' , 'clipboard' ), false , 1 );
2020-01-05 14:11:04 +01:00
$scripts -> set_translations ( 'media-views' );
2020-07-02 13:11:06 +02:00
2014-06-30 01:43:14 +02:00
$scripts -> add ( 'media-editor' , " /wp-includes/js/media-editor $suffix .js " , array ( 'shortcode' , 'media-views' ), false , 1 );
2020-07-07 20:55:04 +02:00
$scripts -> set_translations ( 'media-editor' );
2015-04-14 17:31:28 +02:00
$scripts -> add ( 'media-audiovideo' , " /wp-includes/js/media-audiovideo $suffix .js " , array ( 'media-editor' ), false , 1 );
2015-07-26 12:11:24 +02:00
$scripts -> add ( 'mce-view' , " /wp-includes/js/mce-view $suffix .js " , array ( 'shortcode' , 'jquery' , 'media-views' , 'media-audiovideo' ), false , 1 );
2012-09-24 02:13:18 +02:00
2017-08-02 18:45:44 +02:00
$scripts -> add ( 'wp-api' , " /wp-includes/js/wp-api $suffix .js " , array ( 'jquery' , 'backbone' , 'underscore' , 'wp-api-request' ), false , 1 );
REST API: Introduce the Content API endpoints.
REST API endpoints for your WordPress content. These endpoints provide machine-readable external access to your WordPress site with a clear, standards-driven interface, allowing new and innovative apps for interacting with your site. These endpoints support all of the following:
- Posts: Read and write access to all post data, for all types of post-based data, including pages and media.
- Comments: Read and write access to all comment data. This includes pingbacks and trackbacks.
- Terms: Read and write access to all term data.
- Users: Read and write access to all user data. This includes public access to some data for post authors.
- Meta: Read and write access to metadata for posts, comments, terms, and users, on an opt-in basis from plugins.
- Settings: Read and write access to settings, on an opt-in basis from plugins and core. This enables API management of key site content values that are technically stored in options, such as site title and byline.
Love your REST API, WordPress! The infrastructure says, "Let's do lunch!" but the content API endpoints say, "You're paying!"
Props rmccue, rachelbaker, danielbachhuber, joehoyle, adamsilverstein, afurculita, ahmadawais, airesvsg, alisspers, antisilent, apokalyptik, artoliukkonen, attitude, boonebgorges, bradyvercher, brianhogg, caseypatrickdriscoll, chopinbach, chredd, christianesperar, chrisvanpatten, claudiolabarbera, claudiosmweb, cmmarslender, codebykat, coderkevin, codfish, codonnell822, daggerhart, danielpunkass, davidbhayes, delphinus, desrosj, dimadin, dotancohen, DrewAPicture, Dudo1985, duncanjbrown, eherman24, eivhyl, eliorivero, elyobo, en-alis, ericandrewlewis, ericpedia, evansobkowicz, fjarrett, frozzare, georgestephanis, greatislander, guavaworks, hideokamoto, hkdobrev, hubdotcom, hurtige, iandunn, ircrash, ironpaperweight, iseulde, Japh, jaredcobb, JDGrimes, jdolan, jdoubleu, jeremyfelt, jimt, jjeaton, jmusal, jnylen0, johanmynhardt, johnbillion, jonathanbardo, jorbin, joshkadis, JPry, jshreve, jtsternberg, JustinSainton, kacperszurek, kadamwhite, kalenjohnson, kellbot, kjbenk, kokarn, krogsgard, kuchenundkakao, kuldipem, kwight, lgedeon, lukepettway, mantismamita, markoheijnen, matrixik, mattheu, mauteri, maxcutler, mayukojpn, michael-arestad, miyauchi, mjbanks, modemlooper, mrbobbybryant, NateWr, nathanrice, netweb, NikV, nullvariable, oskosk, oso96_2000, oxymoron, pcfreak30, pento, peterwilsoncc, Pezzab, phh, pippinsplugins, pjgalbraith, pkevan, pollyplummer, pushred, quasel, QWp6t, schlessera, schrapel, Shelob9, shprink, simonlampen, Soean, solal, tapsboy, tfrommen, tharsheblows, thenbrent, tierra, tlovett1, tnegri, tobych, Toddses, toro_unit, traversal, vanillalounge, vishalkakadiya, wanecek, web2style, webbgaraget, websupporter, westonruter, whyisjake, wonderboymusic, wpsmith, xknown, zyphonic.
Fixes #38373.
Built from https://develop.svn.wordpress.org/trunk@38832
git-svn-id: http://core.svn.wordpress.org/trunk@38775 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-20 04:55:32 +02:00
2008-05-21 07:56:04 +02:00
if ( is_admin () ) {
2015-03-12 13:52:26 +01:00
$scripts -> add ( 'admin-tags' , " /wp-admin/js/tags $suffix .js " , array ( 'jquery' , 'wp-ajax-response' ), false , 1 );
2020-07-06 21:47:03 +02:00
$scripts -> set_translations ( 'admin-tags' );
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'admin-comments' , " /wp-admin/js/edit-comments $suffix .js " , array ( 'wp-lists' , 'quicktags' , 'jquery-query' ), false , 1 );
2020-07-06 22:17:02 +02:00
$scripts -> set_translations ( 'admin-comments' );
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'admin-comments' ,
2020-07-06 22:17:02 +02:00
'adminCommentsSettings' ,
2018-08-17 03:51:36 +02:00
array (
2017-12-01 00:11:00 +01:00
'hotkeys_highlight_first' => isset ( $_GET [ 'hotkeys_highlight_first' ] ),
'hotkeys_highlight_last' => isset ( $_GET [ 'hotkeys_highlight_last' ] ),
)
);
$scripts -> add ( 'xfn' , " /wp-admin/js/xfn $suffix .js " , array ( 'jquery' ), false , 1 );
Accessibility: Allow post boxes on the Dashboard and Classic Editor pages to be reordered by using the keyboard.
So far, it has been possible to rearrange into a new order the post boxes (also known as "widgets" on the Dashboard and "meta boxes" on the Edit post page) only by using a pointing device, for example a mouse.
This change adds new controls and functionality to allow the boxes to be rearranged also with the keyboard. Additionally, audible messages are sent to the admin ARIA live region to notify screen reader users of the reorder action result.
Props joedolson, anevins, antpb, audrasjb, xkon, MarcoZ, karmatosed, afercia.
Fixes #39074.
Built from https://develop.svn.wordpress.org/trunk@48373
git-svn-id: http://core.svn.wordpress.org/trunk@48142 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-07-07 15:00:02 +02:00
$scripts -> add ( 'postbox' , " /wp-admin/js/postbox $suffix .js " , array ( 'jquery-ui-sortable' , 'wp-a11y' ), false , 1 );
2020-07-06 20:03:02 +02:00
$scripts -> set_translations ( 'postbox' );
2009-01-02 16:08:58 +01:00
2016-10-15 00:40:28 +02:00
$scripts -> add ( 'tags-box' , " /wp-admin/js/tags-box $suffix .js " , array ( 'jquery' , 'tags-suggest' ), false , 1 );
2020-07-06 23:00:03 +02:00
$scripts -> set_translations ( 'tags-box' );
2016-10-15 00:40:28 +02:00
Script Loader: Switch to JavaScript translations.
Update JavaScript files for tag suggestions and the TinyMCE link plugin to use client side translations. This allows for `_n()` to be used for strings requiring singular and plural versions in which the correct form is only known client side.
Props audrasjb, chaion07, costdev, hellofromtonya, johnbillion, marybaum, nicolefurlan, oglekler, rebasaurus, rsiddharth, sergeybiryukov, shaampk1, shahariaazam, swissspidy, tobifjellner.
Fixes #48244.
Built from https://develop.svn.wordpress.org/trunk@57654
git-svn-id: http://core.svn.wordpress.org/trunk@57155 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-02-18 23:16:14 +01:00
$scripts -> add ( 'tags-suggest' , " /wp-admin/js/tags-suggest $suffix .js " , array ( 'common' , 'jquery-ui-autocomplete' , 'wp-a11y' , 'wp-i18n' ), false , 1 );
2020-07-06 23:00:03 +02:00
$scripts -> set_translations ( 'tags-suggest' );
PressThis v2, first run. Props michael-arestad, stephdau, marcelomazza, DrewAPicture, iseulde, afercia, kraftbj, rachelbaker, AramZS, dd32. See #31373.
Built from https://develop.svn.wordpress.org/trunk@31534
git-svn-id: http://core.svn.wordpress.org/trunk@31515 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-25 02:50:26 +01:00
2020-07-01 22:21:06 +02:00
$scripts -> add ( 'post' , " /wp-admin/js/post $suffix .js " , array ( 'suggest' , 'wp-lists' , 'postbox' , 'tags-box' , 'underscore' , 'word-count' , 'wp-a11y' , 'wp-sanitize' , 'clipboard' ), false , 1 );
$scripts -> set_translations ( 'post' );
2009-01-02 16:08:58 +01:00
2016-08-28 20:40:31 +02:00
$scripts -> add ( 'editor-expand' , " /wp-admin/js/editor-expand $suffix .js " , array ( 'jquery' , 'underscore' ), false , 1 );
2014-07-10 00:06:15 +02:00
2012-09-03 17:39:06 +02:00
$scripts -> add ( 'link' , " /wp-admin/js/link $suffix .js " , array ( 'wp-lists' , 'postbox' ), false , 1 );
2009-01-02 16:08:58 +01:00
2020-07-07 20:40:05 +02:00
$scripts -> add ( 'comment' , " /wp-admin/js/comment $suffix .js " , array ( 'jquery' , 'postbox' ), false , 1 );
$scripts -> set_translations ( 'comment' );
2009-01-29 08:00:00 +01:00
2011-12-21 06:40:09 +01:00
$scripts -> add ( 'admin-gallery' , " /wp-admin/js/gallery $suffix .js " , array ( 'jquery-ui-sortable' ) );
2009-01-02 16:08:58 +01:00
2020-02-25 00:07:09 +01:00
$scripts -> add ( 'admin-widgets' , " /wp-admin/js/widgets $suffix .js " , array ( 'jquery-ui-sortable' , 'jquery-ui-draggable' , 'jquery-ui-droppable' , 'wp-a11y' ), false , 1 );
2020-07-07 19:01:06 +02:00
$scripts -> set_translations ( 'admin-widgets' );
2017-09-08 21:11:43 +02:00
2017-08-02 18:45:44 +02:00
$scripts -> add ( 'media-widgets' , " /wp-admin/js/widgets/media-widgets $suffix .js " , array ( 'jquery' , 'media-models' , 'media-views' , 'wp-api-request' ) );
Widgets: Introduce media widgets for images, audio, and video with extensible base for additional media widgets in the future.
The last time a new widget was introduced, Vuvuzelas were a thing, Angry Birds started taking over phones, and WordPress stopped shipping with Kubrick. Seven years and 17 releases without new widgets have been enough, time to spice up your sidebar!
Props westonruter, melchoyce, obenland, timmydcrawford, adamsilverstein, gonom9, wonderboymusic, Fab1en, DrewAPicture, sirbrillig, joen, matias, samikeijonen, afercia, celloexpressions, designsimply, michelleweber, ranh, kjellr, karmatosed.
Fixes #32417, #39993, #39994, #39995.
Built from https://develop.svn.wordpress.org/trunk@40640
git-svn-id: http://core.svn.wordpress.org/trunk@40501 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-05-11 23:11:44 +02:00
$scripts -> add_inline_script ( 'media-widgets' , 'wp.mediaWidgets.init();' , 'after' );
$scripts -> add ( 'media-audio-widget' , " /wp-admin/js/widgets/media-audio-widget $suffix .js " , array ( 'media-widgets' , 'media-audiovideo' ) );
$scripts -> add ( 'media-image-widget' , " /wp-admin/js/widgets/media-image-widget $suffix .js " , array ( 'media-widgets' ) );
2017-09-25 08:28:45 +02:00
$scripts -> add ( 'media-gallery-widget' , " /wp-admin/js/widgets/media-gallery-widget $suffix .js " , array ( 'media-widgets' ) );
2017-08-02 18:45:44 +02:00
$scripts -> add ( 'media-video-widget' , " /wp-admin/js/widgets/media-video-widget $suffix .js " , array ( 'media-widgets' , 'media-audiovideo' , 'wp-api-request' ) );
2017-07-14 19:09:43 +02:00
$scripts -> add ( 'text-widgets' , " /wp-admin/js/widgets/text-widgets $suffix .js " , array ( 'jquery' , 'backbone' , 'editor' , 'wp-util' , 'wp-a11y' ) );
2017-10-20 18:39:48 +02:00
$scripts -> add ( 'custom-html-widgets' , " /wp-admin/js/widgets/custom-html-widgets $suffix .js " , array ( 'jquery' , 'backbone' , 'wp-util' , 'jquery-ui-core' , 'wp-a11y' ) );
2008-05-21 07:56:04 +02:00
2017-10-09 18:04:48 +02:00
$scripts -> add ( 'theme' , " /wp-admin/js/theme $suffix .js " , array ( 'wp-backbone' , 'wp-a11y' , 'customize-base' ), false , 1 );
2008-10-05 06:43:52 +02:00
2016-10-15 00:40:28 +02:00
$scripts -> add ( 'inline-edit-post' , " /wp-admin/js/inline-edit-post $suffix .js " , array ( 'jquery' , 'tags-suggest' , 'wp-a11y' ), false , 1 );
2020-07-07 20:02:05 +02:00
$scripts -> set_translations ( 'inline-edit-post' );
2008-08-04 23:01:09 +02:00
2015-11-11 01:24:28 +01:00
$scripts -> add ( 'inline-edit-tax' , " /wp-admin/js/inline-edit-tax $suffix .js " , array ( 'jquery' , 'wp-a11y' ), false , 1 );
2020-07-07 20:02:05 +02:00
$scripts -> set_translations ( 'inline-edit-tax' );
2008-10-05 06:43:52 +02:00
2016-03-10 23:37:26 +01:00
$scripts -> add ( 'plugin-install' , " /wp-admin/js/plugin-install $suffix .js " , array ( 'jquery' , 'jquery-ui-core' , 'thickbox' ), false , 1 );
2020-07-07 20:15:03 +02:00
$scripts -> set_translations ( 'plugin-install' );
2008-08-09 07:36:14 +02:00
2021-02-12 01:10:04 +01:00
$scripts -> add ( 'site-health' , " /wp-admin/js/site-health $suffix .js " , array ( 'clipboard' , 'jquery' , 'wp-util' , 'wp-a11y' , 'wp-api-request' , 'wp-url' , 'wp-i18n' , 'wp-hooks' ), false , 1 );
2019-04-18 17:41:51 +02:00
$scripts -> set_translations ( 'site-health' );
Admin: Introduce the Site Health screens.
The Site Health tool serves two purposes:
- Provide site owners with information to improve the performance, reliability, and security of their site.
- Collect comprehensive debug information about the site.
By encouraging site owners to maintain their site and adhere to modern best practices, we ultimately improve the software hygeine of both the WordPress ecosystem, and the open internet as a whole.
Props Clorith, hedgefield, melchoyce, xkon, karmatosed, jordesign, earnjam, ianbelanger, wpscholar, desrosj, pedromendonca, peterbooker, jcastaneda, garyj, soean, pento, timothyblynjacobs, zodiac1978, dgroddick, garrett-eclipse, netweb, tobifjellner, pixolin, afercia, joedolson, birgire.
See #46573.
Built from https://develop.svn.wordpress.org/trunk@44986
git-svn-id: http://core.svn.wordpress.org/trunk@44817 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-23 04:55:53 +01:00
2020-07-02 13:11:06 +02:00
$scripts -> add ( 'privacy-tools' , " /wp-admin/js/privacy-tools $suffix .js " , array ( 'jquery' , 'wp-a11y' ), false , 1 );
$scripts -> set_translations ( 'privacy-tools' );
2019-05-26 22:50:53 +02:00
2022-04-11 06:51:11 +02:00
$scripts -> add ( 'updates' , " /wp-admin/js/updates $suffix .js " , array ( 'common' , 'jquery' , 'wp-util' , 'wp-a11y' , 'wp-sanitize' , 'wp-i18n' ), false , 1 );
2020-06-01 23:41:09 +02:00
$scripts -> set_translations ( 'updates' );
2017-12-01 00:11:00 +01:00
did_action ( 'init' ) && $scripts -> localize (
2018-08-17 03:51:36 +02:00
'updates' ,
'_wpUpdatesSettings' ,
array (
2022-01-19 00:47:01 +01:00
'ajax_nonce' => wp_installing () ? '' : wp_create_nonce ( 'updates' ),
2017-12-01 00:11:00 +01:00
)
);
$scripts -> add ( 'farbtastic' , '/wp-admin/js/farbtastic.js' , array ( 'jquery' ), '1.2' );
2008-10-05 06:43:52 +02:00
External Libraries: Update the Iris color picker to version 1.1.1.
The latest version includes jQuery 3.x deprecation fixes:
* `$.isArray` → `Array.isArray`
* Event attachment/trigger shorthands → `.on()` and `.trigger()`
For a full list of changes in this update, see the PR on GitHub:
https://github.com/Automattic/Iris/pull/72
Follow-up to [22030], [22033], [22385], [22457], [22697], [22732], [23443], [26334], [30551], [30650], [38931], [50547].
Props Clorith, mattwiebe, Cybr.
Fixes #54224.
Built from https://develop.svn.wordpress.org/trunk@52006
git-svn-id: http://core.svn.wordpress.org/trunk@51595 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-03 20:40:00 +01:00
$scripts -> add ( 'iris' , '/wp-admin/js/iris.min.js' , array ( 'jquery-ui-draggable' , 'jquery-ui-slider' , 'jquery-touch-punch' ), '1.1.1' , 1 );
2012-09-27 03:57:38 +02:00
$scripts -> add ( 'wp-color-picker' , " /wp-admin/js/color-picker $suffix .js " , array ( 'iris' ), false , 1 );
2020-07-07 18:10:05 +02:00
$scripts -> set_translations ( 'wp-color-picker' );
2012-09-27 03:57:38 +02:00
2020-10-14 20:21:06 +02:00
$scripts -> add ( 'dashboard' , " /wp-admin/js/dashboard $suffix .js " , array ( 'jquery' , 'admin-comments' , 'postbox' , 'wp-util' , 'wp-a11y' , 'wp-date' ), false , 1 );
$scripts -> set_translations ( 'dashboard' );
2008-10-14 07:10:16 +02:00
2014-06-30 01:43:14 +02:00
$scripts -> add ( 'list-revisions' , " /wp-includes/js/wp-list-revisions $suffix .js " );
2014-08-09 22:44:17 +02:00
2015-04-14 17:31:28 +02:00
$scripts -> add ( 'media-grid' , " /wp-includes/js/media-grid $suffix .js " , array ( 'media-editor' ), false , 1 );
2022-03-10 19:24:03 +01:00
$scripts -> add ( 'media' , " /wp-admin/js/media $suffix .js " , array ( 'jquery' , 'clipboard' , 'wp-i18n' , 'wp-a11y' ), false , 1 );
2020-07-07 18:14:06 +02:00
$scripts -> set_translations ( 'media' );
2017-12-01 00:11:00 +01:00
2020-07-07 15:45:02 +02:00
$scripts -> add ( 'image-edit' , " /wp-admin/js/image-edit $suffix .js " , array ( 'jquery' , 'jquery-ui-core' , 'json2' , 'imgareaselect' , 'wp-a11y' ), false , 1 );
$scripts -> set_translations ( 'image-edit' );
2009-10-08 00:18:09 +02:00
2015-06-01 06:14:25 +02:00
$scripts -> add ( 'set-post-thumbnail' , " /wp-admin/js/set-post-thumbnail $suffix .js " , array ( 'jquery' ), false , 1 );
2020-07-07 20:55:04 +02:00
$scripts -> set_translations ( 'set-post-thumbnail' );
2009-10-08 00:18:09 +02:00
2019-01-21 23:10:49 +01:00
/*
* Navigation Menus : Adding underscore as a dependency to utilize _ . debounce
* see https :// core . trac . wordpress . org / ticket / 42321
*/
$scripts -> add ( 'nav-menu' , " /wp-admin/js/nav-menu $suffix .js " , array ( 'jquery-ui-sortable' , 'jquery-ui-draggable' , 'jquery-ui-droppable' , 'wp-lists' , 'postbox' , 'json2' , 'underscore' ) );
2020-07-07 20:31:05 +02:00
$scripts -> set_translations ( 'nav-menu' );
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'custom-header' , '/wp-admin/js/custom-header.js' , array ( 'jquery-masonry' ), false , 1 );
2012-11-09 12:37:24 +01:00
$scripts -> add ( 'custom-background' , " /wp-admin/js/custom-background $suffix .js " , array ( 'wp-color-picker' , 'media-views' ), false , 1 );
2017-12-01 00:11:00 +01:00
$scripts -> add ( 'media-gallery' , " /wp-admin/js/media-gallery $suffix .js " , array ( 'jquery' ), false , 1 );
2013-12-04 05:13:11 +01:00
2013-12-05 23:01:10 +01:00
$scripts -> add ( 'svg-painter' , '/wp-admin/js/svg-painter.js' , array ( 'jquery' ), false , 1 );
2006-05-22 19:16:05 +02:00
}
}
2007-10-09 23:04:26 +02:00
2008-08-30 21:51:29 +02:00
/**
2022-04-20 16:09:11 +02:00
* Assigns default styles to $styles object .
2008-08-30 21:51:29 +02:00
*
* Nothing is returned , because the $styles parameter is passed by reference .
* Meaning that whatever object is passed will be updated without having to
* reassign the variable that was passed back to the same value . This saves
* memory .
*
* Adding default styles is not the only task , it also assigns the base_url
* property , the default version , and text direction for the object .
*
* @ since 2.6 . 0
*
2021-10-27 20:21:58 +02:00
* @ global array $editor_styles
*
2015-05-27 21:34:27 +02:00
* @ param WP_Styles $styles
2008-08-30 21:51:29 +02:00
*/
2020-02-25 01:59:06 +01:00
function wp_default_styles ( $styles ) {
2021-10-27 20:21:58 +02:00
global $editor_styles ;
2020-01-29 01:45:18 +01:00
// Include an unmodified $wp_version.
2020-02-06 07:33:11 +01:00
require ABSPATH . WPINC . '/version.php' ;
2013-10-05 16:25:09 +02:00
2017-12-01 00:11:00 +01:00
if ( ! defined ( 'SCRIPT_DEBUG' ) ) {
2023-06-23 17:45:21 +02:00
/*
* Note : str_contains () is not used here , as this file can be included
* via wp - admin / load - scripts . php or wp - admin / load - styles . php , in which case
* the polyfills from wp - includes / compat . php are not loaded .
*/
define ( 'SCRIPT_DEBUG' , false !== strpos ( $wp_version , '-src' ) );
2017-12-01 00:11:00 +01:00
}
2012-01-05 21:59:30 +01:00
2019-05-28 05:32:52 +02:00
$guessurl = site_url ();
if ( ! $guessurl ) {
2008-06-24 19:36:21 +02:00
$guessurl = wp_guess_url ();
2017-12-01 00:11:00 +01:00
}
2009-01-14 15:18:51 +01:00
2017-12-01 00:11:00 +01:00
$styles -> base_url = $guessurl ;
$styles -> content_url = defined ( 'WP_CONTENT_URL' ) ? WP_CONTENT_URL : '' ;
2008-05-22 01:24:23 +02:00
$styles -> default_version = get_bloginfo ( 'version' );
2017-12-01 00:11:00 +01:00
$styles -> text_direction = function_exists ( 'is_rtl' ) && is_rtl () ? 'rtl' : 'ltr' ;
$styles -> default_dirs = array ( '/wp-admin/' , '/wp-includes/css/' );
2008-05-22 01:24:23 +02:00
Drop Open Sans in the admin in favor of system fonts.
Rejoice, for your admins will feel more native to your surrounding computing environment and likely load faster, especially when offline, as they no longer have to talk to The Google Overlord.
At the time of introduction in 3.8, there were not good system fonts common to all platforms at the time. In the years since, Windows, Android, OS X, iOS, Firefox OS, and various flavors of Linux have all gotten their own (good) system UI fonts.
There will definitely be visual bugs, mainly around alignment and spacing; these should be documented and reported on the ticket and fixed more atomically so that our current and future selves have a better understanding of what happened and why.
The style remains registered, as it is almost certainly in use by themes and plugins.
props mattmiklic.
see #36753.
Built from https://develop.svn.wordpress.org/trunk@37361
git-svn-id: http://core.svn.wordpress.org/trunk@37327 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-05 00:07:37 +02:00
// Open Sans is no longer used by core, but may be relied upon by themes and plugins.
2013-11-26 02:54:09 +01:00
$open_sans_font_url = '' ;
2013-11-18 22:40:10 +01:00
2019-09-03 02:41:05 +02:00
/*
* translators : If there are characters in your language that are not supported
2013-11-26 02:54:09 +01:00
* by Open Sans , translate this to 'off' . Do not translate into your own language .
2013-11-18 22:40:10 +01:00
*/
2013-11-26 02:54:09 +01:00
if ( 'off' !== _x ( 'on' , 'Open Sans font: on or off' ) ) {
$subsets = 'latin,latin-ext' ;
2019-09-03 02:41:05 +02:00
/*
* translators : To add an additional Open Sans character subset specific to your language ,
2013-11-26 02:54:09 +01:00
* translate this to 'greek' , 'cyrillic' or 'vietnamese' . Do not translate into your own language .
*/
$subset = _x ( 'no-subset' , 'Open Sans font: add new subset (greek, cyrillic, vietnamese)' );
2019-05-28 05:32:52 +02:00
if ( 'cyrillic' === $subset ) {
2013-11-26 02:54:09 +01:00
$subsets .= ',cyrillic,cyrillic-ext' ;
2019-05-28 05:32:52 +02:00
} elseif ( 'greek' === $subset ) {
2013-11-26 02:54:09 +01:00
$subsets .= ',greek,greek-ext' ;
2019-05-28 05:32:52 +02:00
} elseif ( 'vietnamese' === $subset ) {
2013-11-26 02:54:09 +01:00
$subsets .= ',vietnamese' ;
}
2020-01-29 01:45:18 +01:00
// Hotlink Open Sans, for now.
2019-05-31 12:10:54 +02:00
$open_sans_font_url = " https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600&subset= $subsets &display=fallback " ;
2013-11-26 02:54:09 +01:00
}
2013-11-18 22:40:10 +01:00
2014-02-20 07:59:13 +01:00
// Register a stylesheet for the selected admin color scheme.
2016-02-17 19:01:26 +01:00
$styles -> add ( 'colors' , true , array ( 'wp-admin' , 'buttons' ) );
2008-05-22 01:24:23 +02:00
2014-02-16 01:36:14 +01:00
$suffix = SCRIPT_DEBUG ? '' : '.min' ;
2020-01-29 01:45:18 +01:00
// Admin CSS.
2017-12-01 00:11:00 +01:00
$styles -> add ( 'common' , " /wp-admin/css/common $suffix .css " );
$styles -> add ( 'forms' , " /wp-admin/css/forms $suffix .css " );
$styles -> add ( 'admin-menu' , " /wp-admin/css/admin-menu $suffix .css " );
$styles -> add ( 'dashboard' , " /wp-admin/css/dashboard $suffix .css " );
$styles -> add ( 'list-tables' , " /wp-admin/css/list-tables $suffix .css " );
$styles -> add ( 'edit' , " /wp-admin/css/edit $suffix .css " );
$styles -> add ( 'revisions' , " /wp-admin/css/revisions $suffix .css " );
$styles -> add ( 'media' , " /wp-admin/css/media $suffix .css " );
$styles -> add ( 'themes' , " /wp-admin/css/themes $suffix .css " );
$styles -> add ( 'about' , " /wp-admin/css/about $suffix .css " );
$styles -> add ( 'nav-menus' , " /wp-admin/css/nav-menus $suffix .css " );
$styles -> add ( 'widgets' , " /wp-admin/css/widgets $suffix .css " , array ( 'wp-pointer' ) );
$styles -> add ( 'site-icon' , " /wp-admin/css/site-icon $suffix .css " );
$styles -> add ( 'l10n' , " /wp-admin/css/l10n $suffix .css " );
$styles -> add ( 'code-editor' , " /wp-admin/css/code-editor $suffix .css " , array ( 'wp-codemirror' ) );
Admin: Introduce the Site Health screens.
The Site Health tool serves two purposes:
- Provide site owners with information to improve the performance, reliability, and security of their site.
- Collect comprehensive debug information about the site.
By encouraging site owners to maintain their site and adhere to modern best practices, we ultimately improve the software hygeine of both the WordPress ecosystem, and the open internet as a whole.
Props Clorith, hedgefield, melchoyce, xkon, karmatosed, jordesign, earnjam, ianbelanger, wpscholar, desrosj, pedromendonca, peterbooker, jcastaneda, garyj, soean, pento, timothyblynjacobs, zodiac1978, dgroddick, garrett-eclipse, netweb, tobifjellner, pixolin, afercia, joedolson, birgire.
See #46573.
Built from https://develop.svn.wordpress.org/trunk@44986
git-svn-id: http://core.svn.wordpress.org/trunk@44817 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-23 04:55:53 +01:00
$styles -> add ( 'site-health' , " /wp-admin/css/site-health $suffix .css " );
2016-01-18 10:57:29 +01:00
Drop Open Sans in the admin in favor of system fonts.
Rejoice, for your admins will feel more native to your surrounding computing environment and likely load faster, especially when offline, as they no longer have to talk to The Google Overlord.
At the time of introduction in 3.8, there were not good system fonts common to all platforms at the time. In the years since, Windows, Android, OS X, iOS, Firefox OS, and various flavors of Linux have all gotten their own (good) system UI fonts.
There will definitely be visual bugs, mainly around alignment and spacing; these should be documented and reported on the ticket and fixed more atomically so that our current and future selves have a better understanding of what happened and why.
The style remains registered, as it is almost certainly in use by themes and plugins.
props mattmiklic.
see #36753.
Built from https://develop.svn.wordpress.org/trunk@37361
git-svn-id: http://core.svn.wordpress.org/trunk@37327 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-05-05 00:07:37 +02:00
$styles -> add ( 'wp-admin' , false , array ( 'dashicons' , 'common' , 'forms' , 'admin-menu' , 'dashboard' , 'list-tables' , 'edit' , 'revisions' , 'media' , 'themes' , 'about' , 'nav-menus' , 'widgets' , 'site-icon' , 'l10n' ) );
2016-01-18 10:57:29 +01:00
2017-12-01 00:11:00 +01:00
$styles -> add ( 'login' , " /wp-admin/css/login $suffix .css " , array ( 'dashicons' , 'buttons' , 'forms' , 'l10n' ) );
Upgrade/Install: Bring some consistency to installation screen styles.
* Include `forms.css` and `l10n.css`, for consistency with login screen and other admin screens.
* Remove redundant `@import` directives from `login.css` for files already declared as dependencies.
* Adjust margin on password strength meter for consistency with other fields.
* Increase font size for "You will need this password to log in" notice.
* Fix misaligned icon on "Hide" button for the password.
Props iseulde, dan@micamedia.com, bassgang, cdog, johnbillion, nmenescardi, mukesh27, SergeyBiryukov.
Fixes #35776, #47757, #47758.
Built from https://develop.svn.wordpress.org/trunk@45673
git-svn-id: http://core.svn.wordpress.org/trunk@45484 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-07-25 21:11:55 +02:00
$styles -> add ( 'install' , " /wp-admin/css/install $suffix .css " , array ( 'dashicons' , 'buttons' , 'forms' , 'l10n' ) );
2017-12-01 00:11:00 +01:00
$styles -> add ( 'wp-color-picker' , " /wp-admin/css/color-picker $suffix .css " );
Administration: Remove any CSS related to Internet Explorer versions 6 – 10.
In WordPress 3.2 support for IE6 was dropped, IE7 followed a few versions later. With the 4.8 release, WordPress officially ended support for Internet Explorer versions 8, 9, and 10. Yet, we still have shipped CSS for the unsupported IE versions....until now! Goodbye to ie.css and star hacks!
* Removes ie.css and `ie` style handle.
* Removes IE specific class names and any related CSS.
* Drops support for IE8 and older in `wp_customize_support_script()`.
* Updates compatibility mode for CSS minification to `ie11`.
Props ayeshrajans, isabel_brison, afercia, netweb, peterwilsoncc, ocean90.
Fixes #17232, #46015.
Built from https://develop.svn.wordpress.org/trunk@47771
git-svn-id: http://core.svn.wordpress.org/trunk@47547 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2020-05-06 22:15:07 +02:00
$styles -> add ( 'customize-controls' , " /wp-admin/css/customize-controls $suffix .css " , array ( 'wp-admin' , 'colors' , 'imgareaselect' ) );
2017-12-01 00:11:00 +01:00
$styles -> add ( 'customize-widgets' , " /wp-admin/css/customize-widgets $suffix .css " , array ( 'wp-admin' , 'colors' ) );
Add menu management to the Customizer.
This brings in the Menu Customizer plugin: https://wordpress.org/plugins/menu-customizer/.
props celloexpressions, westonruter, valendesigns, voldemortensen, ocean90, adamsilverstein, kucrut, jorbin, designsimply, afercia, davidakennedy, obenland.
see #32576.
Built from https://develop.svn.wordpress.org/trunk@32806
git-svn-id: http://core.svn.wordpress.org/trunk@32777 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-17 00:08:26 +02:00
$styles -> add ( 'customize-nav-menus' , " /wp-admin/css/customize-nav-menus $suffix .css " , array ( 'wp-admin' , 'colors' ) );
2020-01-29 01:45:18 +01:00
// Common dependencies.
2017-12-01 00:11:00 +01:00
$styles -> add ( 'buttons' , " /wp-includes/css/buttons $suffix .css " );
2014-02-16 01:36:14 +01:00
$styles -> add ( 'dashicons' , " /wp-includes/css/dashicons $suffix .css " );
2010-02-21 01:03:42 +01:00
2020-01-29 01:45:18 +01:00
// Includes CSS.
2017-12-01 00:11:00 +01:00
$styles -> add ( 'admin-bar' , " /wp-includes/css/admin-bar $suffix .css " , array ( 'dashicons' ) );
$styles -> add ( 'wp-auth-check' , " /wp-includes/css/wp-auth-check $suffix .css " , array ( 'dashicons' ) );
$styles -> add ( 'editor-buttons' , " /wp-includes/css/editor $suffix .css " , array ( 'dashicons' ) );
$styles -> add ( 'media-views' , " /wp-includes/css/media-views $suffix .css " , array ( 'buttons' , 'dashicons' , 'wp-mediaelement' ) );
$styles -> add ( 'wp-pointer' , " /wp-includes/css/wp-pointer $suffix .css " , array ( 'dashicons' ) );
$styles -> add ( 'customize-preview' , " /wp-includes/css/customize-preview $suffix .css " , array ( 'dashicons' ) );
2015-10-31 05:38:25 +01:00
$styles -> add ( 'wp-embed-template-ie' , " /wp-includes/css/wp-embed-template-ie $suffix .css " );
$styles -> add_data ( 'wp-embed-template-ie' , 'conditional' , 'lte IE 8' );
2014-02-16 01:36:14 +01:00
2020-01-29 01:45:18 +01:00
// External libraries and friends.
2017-12-01 00:11:00 +01:00
$styles -> add ( 'imgareaselect' , '/wp-includes/js/imgareaselect/imgareaselect.css' , array (), '0.9.8' );
2014-02-16 01:36:14 +01:00
$styles -> add ( 'wp-jquery-ui-dialog' , " /wp-includes/css/jquery-ui-dialog $suffix .css " , array ( 'dashicons' ) );
2022-09-29 16:21:11 +02:00
$styles -> add ( 'mediaelement' , '/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css' , array (), '4.2.17' );
2017-12-01 00:11:00 +01:00
$styles -> add ( 'wp-mediaelement' , " /wp-includes/js/mediaelement/wp-mediaelement $suffix .css " , array ( 'mediaelement' ) );
$styles -> add ( 'thickbox' , '/wp-includes/js/thickbox/thickbox.css' , array ( 'dashicons' ) );
$styles -> add ( 'wp-codemirror' , '/wp-includes/js/codemirror/codemirror.min.css' , array (), '5.29.1-alpha-ee20357' );
2014-02-16 01:36:14 +01:00
2020-01-29 01:45:18 +01:00
// Deprecated CSS.
2016-03-06 16:38:28 +01:00
$styles -> add ( 'deprecated-media' , " /wp-admin/css/deprecated-media $suffix .css " );
2017-12-01 00:11:00 +01:00
$styles -> add ( 'farbtastic' , " /wp-admin/css/farbtastic $suffix .css " , array (), '1.3u1' );
2022-03-24 21:07:05 +01:00
$styles -> add ( 'jcrop' , '/wp-includes/js/jcrop/jquery.Jcrop.min.css' , array (), '0.9.15' );
2014-02-20 07:59:13 +01:00
$styles -> add ( 'colors-fresh' , false , array ( 'wp-admin' , 'buttons' ) ); // Old handle.
2020-01-29 01:45:18 +01:00
$styles -> add ( 'open-sans' , $open_sans_font_url ); // No longer used in core as of 4.6.
2014-02-16 01:36:14 +01:00
2021-02-02 19:37:04 +01:00
// Noto Serif is no longer used by core, but may be relied upon by themes and plugins.
2018-12-13 17:50:36 +01:00
$fonts_url = '' ;
/*
2019-09-03 02:41:05 +02:00
* translators : Use this to specify the proper Google Font name and variants
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
* to load that is supported by your language . Do not translate .
* Set to 'off' to disable loading .
2018-12-13 17:50:36 +01:00
*/
Block Editor: Update `@wordpress` dependencies to match Gutenberg 4.5.1.
- Update the annotations, api-fetch, block-library, blocks, components, compose, core-data, data, date, dom, edit-post, editor, element, format-library, html-entities, i18n, jest-console, jest-preset-default, keycodes, list-reusable-blocks, notices, nux, plugins, rich-text, scripts, token-lists, url, viewport packages.
- Upgrades React from 16.5.2 to 16.6.3.
- Adds a missing `wp-date` dependency to the editor script.
- Updates changed dependencies in `script-loader.php`.
- Fixes undefined notices in some blocks.
- Removes incorrect `gutenberg` textdomain.
Merges [43891], [43903], and [43919] to trunk.
Props atimmer, aduth, youknowriad, danielbachhuber.
See #45145.
Built from https://develop.svn.wordpress.org/trunk@44262
git-svn-id: http://core.svn.wordpress.org/trunk@44092 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-17 16:37:00 +01:00
$font_family = _x ( 'Noto Serif:400,400i,700,700i' , 'Google Font Name and Variants' );
if ( 'off' !== $font_family ) {
$fonts_url = 'https://fonts.googleapis.com/css?family=' . urlencode ( $font_family );
2018-12-13 17:50:36 +01:00
}
2021-02-02 19:37:04 +01:00
$styles -> add ( 'wp-editor-font' , $fonts_url ); // No longer used in core as of 5.7.
2021-05-11 16:16:01 +02:00
$block_library_theme_path = WPINC . " /css/dist/block-library/theme $suffix .css " ;
$styles -> add ( 'wp-block-library-theme' , " / $block_library_theme_path " );
2021-05-11 11:43:08 +02:00
$styles -> add_data ( 'wp-block-library-theme' , 'path' , ABSPATH . $block_library_theme_path );
2018-12-13 17:50:36 +01:00
2021-04-15 17:19:43 +02:00
$styles -> add (
'wp-reset-editor-styles' ,
" /wp-includes/css/dist/block-library/reset $suffix .css " ,
array ( 'common' , 'forms' ) // Make sure the reset is loaded after the default WP Admin styles.
);
$styles -> add (
'wp-editor-classic-layout-styles' ,
" /wp-includes/css/dist/edit-post/classic $suffix .css " ,
array ()
);
2023-02-01 21:17:13 +01:00
$styles -> add (
'wp-block-editor-content' ,
" /wp-includes/css/dist/block-editor/content $suffix .css " ,
2023-06-27 02:23:23 +02:00
array ( 'wp-components' )
2023-02-01 21:17:13 +01:00
);
2021-04-15 17:19:43 +02:00
$wp_edit_blocks_dependencies = array (
'wp-components' ,
'wp-editor' ,
Docs: Replace multiple single line comments with multi-line comments.
This changeset updates various comments as per WordPress PHP Inline Documentation Standards.
See https://developer.wordpress.org/coding-standards/inline-documentation-standards/php/#5-inline-comments.
Follow-up to [56174], [56175], [56176], [56177], [56178], [56179], [56180], [56191], [56192], [56193].
Props costdev, audrasjb.
See #58459.
Built from https://develop.svn.wordpress.org/trunk@56194
git-svn-id: http://core.svn.wordpress.org/trunk@55706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-11 01:11:22 +02:00
/*
* This needs to be added before the block library styles ,
* The block library styles override the " reset " styles .
*/
2021-04-15 17:19:43 +02:00
'wp-reset-editor-styles' ,
'wp-block-library' ,
'wp-reusable-blocks' ,
2023-02-01 21:17:13 +01:00
'wp-block-editor-content' ,
2023-09-26 16:23:26 +02:00
'wp-patterns' ,
2021-04-15 17:19:43 +02:00
);
2021-05-25 09:40:56 +02:00
// Only load the default layout and margin styles for themes without theme.json file.
Themes: Introduce wp_theme_has_theme_json() for public consumption.
Adds `wp_theme_has_theme_json()` for public consumption, to replace the private internal Core-only `WP_Theme_JSON_Resolver::theme_has_support()` method. This new global function checks if a theme or its parent has a `theme.json` file.
For performance, results are cached as an integer `1` or `0` in the `'theme_json'` group with `'wp_theme_has_theme_json'` key. This is a non-persistent cache. Why? To make the derived data from `theme.json` is always fresh from the potential modifications done via hooks that can use dynamic data (modify the stylesheet depending on some option, settings depending on user permissions, etc.).
Also adds a new public function `wp_clean_theme_json_cache()` to clear the cache on `'switch_theme'` and `start_previewing_theme'`.
References:
* [https://github.com/WordPress/gutenberg/pull/45168 Gutenberg PR 45168] Add `wp_theme_has_theme_json` as a public API to know whether a theme has a `theme.json`.
* [https://github.com/WordPress/gutenberg/pull/45380 Gutenberg PR 45380] Deprecate `WP_Theme_JSON_Resolver:theme_has_support()`.
* [https://github.com/WordPress/gutenberg/pull/46150 Gutenberg PR 46150] Make `theme.json` object caches non-persistent.
* [https://github.com/WordPress/gutenberg/pull/45979 Gutenberg PR 45979] Don't check if constants set by `wp_initial_constants()` are defined.
* [https://github.com/WordPress/gutenberg/pull/45950 Gutenberg PR 45950] Cleaner logic in `wp_theme_has_theme_json`.
Follow-up to [54493], [53282], [52744], [52049], [50959].
Props oandregal, afragen, alexstine, aristath, azaozz, costdev, flixos90, hellofromTonya, mamaduka, mcsf, ocean90, spacedmonkey.
Fixes #56975.
Built from https://develop.svn.wordpress.org/trunk@55086
git-svn-id: http://core.svn.wordpress.org/trunk@54619 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-01-18 12:40:10 +01:00
if ( ! wp_theme_has_theme_json () ) {
2021-05-25 09:40:56 +02:00
$wp_edit_blocks_dependencies [] = 'wp-editor-classic-layout-styles' ;
}
Editor: Fix 'wp-block-library-theme' style enqueue conditions.
Fixes the conditions for when to enqueue the opinionated block styles (i.e. `'wp-block-library-theme'` stylesheet):
* the theme adds `'wp-block-styles'` theme support;
* and no editor styles are declared.
This resolves an issue with themes that do not add the `'wp-block-styles'` theme support while not impacting themes that do.
Follow-up to [53419], [52069], [50761], [44157].
Props mikachan, costdev, glendaviesnz, hellofromTonya, jffng, mamaduka, ndiego, poena, sannevndrmeulen, scruffian.
Fixes #57561.
Built from https://develop.svn.wordpress.org/trunk@55368
git-svn-id: http://core.svn.wordpress.org/trunk@54901 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-20 22:13:27 +01:00
if (
current_theme_supports ( 'wp-block-styles' ) &&
( ! is_array ( $editor_styles ) || count ( $editor_styles ) === 0 )
) {
/*
* Include opinionated block styles if the theme supports block styles and
* no $editor_styles are declared , so the editor never appears broken .
*/
2021-04-15 17:19:43 +02:00
$wp_edit_blocks_dependencies [] = 'wp-block-library-theme' ;
}
2018-12-13 17:50:36 +01:00
$styles -> add (
'wp-edit-blocks' ,
2018-12-17 04:28:06 +01:00
" /wp-includes/css/dist/block-library/editor $suffix .css " ,
2021-04-15 17:19:43 +02:00
$wp_edit_blocks_dependencies
2018-12-13 17:50:36 +01:00
);
$package_styles = array (
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 22:07:12 +01:00
'block-editor' => array ( 'wp-components' , 'wp-preferences' ),
2018-12-13 17:50:36 +01:00
'block-library' => array (),
2020-07-21 17:38:03 +02:00
'block-directory' => array (),
2018-12-13 17:50:36 +01:00
'components' => array (),
2023-07-03 08:50:25 +02:00
'commands' => array (),
2019-03-21 13:48:00 +01:00
'edit-post' => array (
'wp-components' ,
'wp-block-editor' ,
'wp-editor' ,
'wp-edit-blocks' ,
'wp-block-library' ,
2023-07-03 08:50:25 +02:00
'wp-commands' ,
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 22:07:12 +01:00
'wp-preferences' ,
2019-03-21 13:48:00 +01:00
),
'editor' => array (
'wp-components' ,
'wp-block-editor' ,
2021-04-15 17:19:43 +02:00
'wp-reusable-blocks' ,
2023-09-26 16:23:26 +02:00
'wp-patterns' ,
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 22:07:12 +01:00
'wp-preferences' ,
2019-03-21 13:48:00 +01:00
),
2018-12-14 11:55:01 +01:00
'format-library' => array (),
2018-12-13 17:50:36 +01:00
'list-reusable-blocks' => array ( 'wp-components' ),
2021-04-15 17:19:43 +02:00
'reusable-blocks' => array ( 'wp-components' ),
2023-09-26 16:23:26 +02:00
'patterns' => array ( 'wp-components' ),
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 22:07:12 +01:00
'preferences' => array ( 'wp-components' ),
2018-12-13 17:50:36 +01:00
'nux' => array ( 'wp-components' ),
2021-06-15 10:52:30 +02:00
'widgets' => array (
2021-05-25 10:40:25 +02:00
'wp-components' ,
2021-06-15 10:52:30 +02:00
),
'edit-widgets' => array (
'wp-widgets' ,
2021-05-25 10:40:25 +02:00
'wp-block-editor' ,
'wp-edit-blocks' ,
'wp-block-library' ,
'wp-reusable-blocks' ,
2023-09-26 16:23:26 +02:00
'wp-patterns' ,
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 22:07:12 +01:00
'wp-preferences' ,
2021-05-25 10:40:25 +02:00
),
'customize-widgets' => array (
2021-06-15 10:52:30 +02:00
'wp-widgets' ,
2021-05-25 10:40:25 +02:00
'wp-block-editor' ,
'wp-edit-blocks' ,
'wp-block-library' ,
'wp-reusable-blocks' ,
2023-09-26 16:23:26 +02:00
'wp-patterns' ,
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 22:07:12 +01:00
'wp-preferences' ,
2021-05-25 10:40:25 +02:00
),
2021-11-09 03:17:17 +01:00
'edit-site' => array (
'wp-components' ,
'wp-block-editor' ,
'wp-edit-blocks' ,
2023-07-03 08:50:25 +02:00
'wp-commands' ,
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 22:07:12 +01:00
'wp-preferences' ,
2021-11-09 03:17:17 +01:00
),
2018-12-13 17:50:36 +01:00
);
foreach ( $package_styles as $package => $dependencies ) {
2018-12-14 05:35:40 +01:00
$handle = 'wp-' . $package ;
2018-12-17 04:28:06 +01:00
$path = " /wp-includes/css/dist/ $package /style $suffix .css " ;
2018-12-13 17:50:36 +01:00
2021-05-17 16:28:04 +02:00
if ( 'block-library' === $package && wp_should_load_separate_core_block_assets () ) {
2021-05-11 11:43:08 +02:00
$path = " /wp-includes/css/dist/ $package /common $suffix .css " ;
}
2018-12-13 17:50:36 +01:00
$styles -> add ( $handle , $path , $dependencies );
2021-05-11 11:43:08 +02:00
$styles -> add_data ( $handle , 'path' , ABSPATH . $path );
2018-12-19 04:31:29 +01:00
}
2020-01-29 01:45:18 +01:00
// RTL CSS.
2018-12-19 04:31:29 +01:00
$rtl_styles = array (
2020-01-29 01:45:18 +01:00
// Admin CSS.
2018-12-19 04:31:29 +01:00
'common' ,
'forms' ,
'admin-menu' ,
'dashboard' ,
'list-tables' ,
'edit' ,
'revisions' ,
'media' ,
'themes' ,
'about' ,
'nav-menus' ,
'widgets' ,
'site-icon' ,
'l10n' ,
'install' ,
'wp-color-picker' ,
'customize-controls' ,
'customize-widgets' ,
'customize-nav-menus' ,
'customize-preview' ,
'login' ,
2019-04-12 18:39:52 +02:00
'site-health' ,
2020-01-29 01:45:18 +01:00
// Includes CSS.
2018-12-19 04:31:29 +01:00
'buttons' ,
'admin-bar' ,
'wp-auth-check' ,
'editor-buttons' ,
'media-views' ,
'wp-pointer' ,
'wp-jquery-ui-dialog' ,
2020-01-29 01:45:18 +01:00
// Package styles.
2021-04-15 17:19:43 +02:00
'wp-reset-editor-styles' ,
'wp-editor-classic-layout-styles' ,
2018-12-19 04:31:29 +01:00
'wp-block-library-theme' ,
'wp-edit-blocks' ,
2019-03-21 13:48:00 +01:00
'wp-block-editor' ,
2018-12-19 04:31:29 +01:00
'wp-block-library' ,
2020-07-21 17:38:03 +02:00
'wp-block-directory' ,
2023-07-03 08:50:25 +02:00
'wp-commands' ,
2018-12-19 04:31:29 +01:00
'wp-components' ,
2021-06-15 10:52:30 +02:00
'wp-customize-widgets' ,
2018-12-19 04:31:29 +01:00
'wp-edit-post' ,
2021-11-09 03:17:17 +01:00
'wp-edit-site' ,
2021-06-15 10:52:30 +02:00
'wp-edit-widgets' ,
2018-12-19 04:31:29 +01:00
'wp-editor' ,
'wp-format-library' ,
'wp-list-reusable-blocks' ,
2021-04-15 17:19:43 +02:00
'wp-reusable-blocks' ,
2023-09-26 16:23:26 +02:00
'wp-patterns' ,
2018-12-19 04:31:29 +01:00
'wp-nux' ,
2021-06-15 10:52:30 +02:00
'wp-widgets' ,
2020-01-29 01:45:18 +01:00
// Deprecated CSS.
2018-12-19 04:31:29 +01:00
'deprecated-media' ,
'farbtastic' ,
);
foreach ( $rtl_styles as $rtl_style ) {
$styles -> add_data ( $rtl_style , 'rtl' , 'replace' );
if ( $suffix ) {
$styles -> add_data ( $rtl_style , 'suffix' , $suffix );
}
2018-12-13 17:50:36 +01:00
}
2008-05-22 01:24:23 +02:00
}
2008-08-30 21:51:29 +02:00
/**
2022-04-20 16:09:11 +02:00
* Reorders JavaScript scripts array to place prototype before jQuery .
2008-08-30 21:51:29 +02:00
*
* @ since 2.3 . 1
*
2022-09-20 22:32:09 +02:00
* @ param string [] $js_array JavaScript scripts array
* @ return string [] Reordered array , if needed .
2008-08-30 21:51:29 +02:00
*/
2007-10-09 23:04:26 +02:00
function wp_prototype_before_jquery ( $js_array ) {
2019-05-28 05:32:52 +02:00
$prototype = array_search ( 'prototype' , $js_array , true );
if ( false === $prototype ) {
2007-10-09 23:04:26 +02:00
return $js_array ;
2017-12-01 00:11:00 +01:00
}
2007-10-09 23:04:26 +02:00
2019-05-28 05:32:52 +02:00
$jquery = array_search ( 'jquery' , $js_array , true );
if ( false === $jquery ) {
2007-10-09 23:04:26 +02:00
return $js_array ;
2017-12-01 00:11:00 +01:00
}
2007-10-09 23:04:26 +02:00
2017-12-01 00:11:00 +01:00
if ( $prototype < $jquery ) {
2007-10-09 23:04:26 +02:00
return $js_array ;
2017-12-01 00:11:00 +01:00
}
2007-10-09 23:04:26 +02:00
2017-12-01 00:11:00 +01:00
unset ( $js_array [ $prototype ] );
2007-10-09 23:04:26 +02:00
array_splice ( $js_array , $jquery , 0 , 'prototype' );
return $js_array ;
}
2008-08-30 21:51:29 +02:00
/**
2022-04-20 16:09:11 +02:00
* Loads localized data on print rather than initialization .
2008-08-30 21:51:29 +02:00
*
* These localizations require information that may not be loaded even by init .
*
* @ since 2.5 . 0
2023-12-19 14:12:27 +01:00
*
* @ global array $shortcode_tags
2008-08-30 21:51:29 +02:00
*/
2008-03-02 21:17:30 +01:00
function wp_just_in_time_script_localization () {
2008-10-15 17:56:14 +02:00
2017-12-01 00:11:00 +01:00
wp_localize_script (
2018-08-17 03:51:36 +02:00
'autosave' ,
'autosaveL10n' ,
array (
2017-12-01 00:11:00 +01:00
'autosaveInterval' => AUTOSAVE_INTERVAL ,
'blog_id' => get_current_blog_id (),
)
);
2017-09-19 10:19:45 +02:00
2017-12-01 00:11:00 +01:00
wp_localize_script (
2018-08-17 03:51:36 +02:00
'mce-view' ,
'mceViewL10n' ,
array (
2017-12-01 00:11:00 +01:00
'shortcodes' => ! empty ( $GLOBALS [ 'shortcode_tags' ] ) ? array_keys ( $GLOBALS [ 'shortcode_tags' ] ) : array (),
)
);
2017-10-12 07:10:50 +02:00
2017-12-01 00:11:00 +01:00
wp_localize_script (
2018-08-17 03:51:36 +02:00
'word-count' ,
'wordCountL10n' ,
array (
2023-02-07 18:28:18 +01:00
'type' => wp_get_word_count_type (),
2017-12-01 00:11:00 +01:00
'shortcodes' => ! empty ( $GLOBALS [ 'shortcode_tags' ] ) ? array_keys ( $GLOBALS [ 'shortcode_tags' ] ) : array (),
)
);
2016-06-29 14:58:29 +02:00
}
/**
* Localizes the jQuery UI datepicker .
*
* @ since 4.6 . 0
*
2017-06-26 00:06:41 +02:00
* @ link https :// api . jqueryui . com / datepicker / #options
2016-07-20 21:33:30 +02:00
*
2019-08-04 03:46:55 +02:00
* @ global WP_Locale $wp_locale WordPress date and time locale object .
2016-06-29 14:58:29 +02:00
*/
function wp_localize_jquery_ui_datepicker () {
global $wp_locale ;
if ( ! wp_script_is ( 'jquery-ui-datepicker' , 'enqueued' ) ) {
return ;
}
// Convert the PHP date format into jQuery UI's format.
$datepicker_date_format = str_replace (
array (
2017-12-01 00:11:00 +01:00
'd' ,
'j' ,
'l' ,
'z' , // Day.
'F' ,
'M' ,
'n' ,
'm' , // Month.
'Y' ,
2020-01-29 01:45:18 +01:00
'y' , // Year.
2016-06-29 14:58:29 +02:00
),
array (
2017-12-01 00:11:00 +01:00
'dd' ,
'd' ,
'DD' ,
'o' ,
'MM' ,
'M' ,
'm' ,
'mm' ,
'yy' ,
'y' ,
2016-06-29 14:58:29 +02:00
),
get_option ( 'date_format' )
);
2017-12-01 00:11:00 +01:00
$datepicker_defaults = wp_json_encode (
array (
'closeText' => __ ( 'Close' ),
'currentText' => __ ( 'Today' ),
'monthNames' => array_values ( $wp_locale -> month ),
'monthNamesShort' => array_values ( $wp_locale -> month_abbrev ),
'nextText' => __ ( 'Next' ),
'prevText' => __ ( 'Previous' ),
'dayNames' => array_values ( $wp_locale -> weekday ),
'dayNamesShort' => array_values ( $wp_locale -> weekday_abbrev ),
'dayNamesMin' => array_values ( $wp_locale -> weekday_initial ),
'dateFormat' => $datepicker_date_format ,
'firstDay' => absint ( get_option ( 'start_of_week' ) ),
'isRTL' => $wp_locale -> is_rtl (),
)
);
2010-03-21 07:06:18 +01:00
External Libraries: Further fix jQuery deprecations in WordPress core.
Follow-up to [50001], [50270], [50367], [50383], [50410], [50420], [50429], [50547].
Props chaion07, Clorith, costdev, desrosj, malthert, peterwilsoncc, presskopp, promz, sabernhardt, SergeyBiryukov, toro_unit, wpnomad.
Fixes #51519.
Built from https://develop.svn.wordpress.org/trunk@52285
git-svn-id: http://core.svn.wordpress.org/trunk@51877 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-30 18:18:01 +01:00
wp_add_inline_script ( 'jquery-ui-datepicker' , " jQuery(function(jQuery) { jQuery.datepicker.setDefaults( { $datepicker_defaults } );}); " );
2008-02-22 05:02:09 +01:00
}
2017-05-18 16:34:43 +02:00
/**
* Localizes community events data that needs to be passed to dashboard . js .
*
* @ since 4.8 . 0
*/
function wp_localize_community_events () {
if ( ! wp_script_is ( 'dashboard' ) ) {
return ;
}
2020-02-06 07:33:11 +01:00
require_once ABSPATH . 'wp-admin/includes/class-wp-community-events.php' ;
2017-05-18 16:34:43 +02:00
2017-05-19 07:48:42 +02:00
$user_id = get_current_user_id ();
$saved_location = get_user_option ( 'community-events-location' , $user_id );
$saved_ip_address = isset ( $saved_location [ 'ip' ] ) ? $saved_location [ 'ip' ] : false ;
$current_ip_address = WP_Community_Events :: get_unsafe_client_ip ();
/*
* If the user ' s location is based on their IP address , then update their
* location when their IP address changes . This allows them to see events
* in their current city when travelling . Otherwise , they would always be
* shown events in the city where they were when they first loaded the
* Dashboard , which could have been months or years ago .
*/
if ( $saved_ip_address && $current_ip_address && $current_ip_address !== $saved_ip_address ) {
$saved_location [ 'ip' ] = $current_ip_address ;
2021-05-24 21:59:57 +02:00
update_user_meta ( $user_id , 'community-events-location' , $saved_location );
2017-05-19 07:48:42 +02:00
}
$events_client = new WP_Community_Events ( $user_id , $saved_location );
2017-05-18 16:34:43 +02:00
2017-12-01 00:11:00 +01:00
wp_localize_script (
2018-08-17 03:51:36 +02:00
'dashboard' ,
'communityEventsData' ,
array (
2020-10-14 20:23:04 +02:00
'nonce' => wp_create_nonce ( 'community_events' ),
'cache' => $events_client -> get_cached_events (),
2020-10-14 20:21:06 +02:00
'time_format' => get_option ( 'time_format' ),
2017-05-18 16:34:43 +02:00
)
2017-12-01 00:11:00 +01:00
);
2017-05-18 16:34:43 +02:00
}
2014-03-12 17:12:15 +01:00
/**
* Administration Screen CSS for changing the styles .
*
* If installing the 'wp-admin/' directory will be replaced with './' .
*
* The $_wp_admin_css_colors global manages the Administration Screens CSS
* stylesheet that is loaded . The option that is set is 'admin_color' and is the
* color and key for the array . The value for the color key is an object with
* a 'url' parameter that has the URL path to the CSS file .
*
* The query from $src parameter will be appended to the URL that is given from
* the $_wp_admin_css_colors array value URL .
*
* @ since 2.6 . 0
2020-06-16 23:07:14 +02:00
*
2015-05-27 21:34:27 +02:00
* @ global array $_wp_admin_css_colors
2014-03-12 17:12:15 +01:00
*
2015-05-27 21:34:27 +02:00
* @ param string $src Source URL .
2014-03-12 17:12:15 +01:00
* @ param string $handle Either 'colors' or 'colors-rtl' .
2015-05-27 21:34:27 +02:00
* @ return string | false URL path to CSS stylesheet for Administration Screens .
2014-03-12 17:12:15 +01:00
*/
function wp_style_loader_src ( $src , $handle ) {
global $_wp_admin_css_colors ;
2017-12-01 00:11:00 +01:00
if ( wp_installing () ) {
2014-03-12 17:12:15 +01:00
return preg_replace ( '#^wp-admin/#' , './' , $src );
2017-12-01 00:11:00 +01:00
}
2014-03-12 17:12:15 +01:00
2019-05-28 05:32:52 +02:00
if ( 'colors' === $handle ) {
2017-12-01 00:11:00 +01:00
$color = get_user_option ( 'admin_color' );
2014-03-12 17:12:15 +01:00
2017-12-01 00:11:00 +01:00
if ( empty ( $color ) || ! isset ( $_wp_admin_css_colors [ $color ] ) ) {
2014-03-12 17:12:15 +01:00
$color = 'fresh' ;
2017-12-01 00:11:00 +01:00
}
2014-03-12 17:12:15 +01:00
2017-12-01 00:11:00 +01:00
$color = $_wp_admin_css_colors [ $color ];
$url = $color -> url ;
2014-03-12 17:12:15 +01:00
if ( ! $url ) {
return false ;
}
2016-02-19 21:44:26 +01:00
$parsed = parse_url ( $src );
2017-12-01 00:11:00 +01:00
if ( isset ( $parsed [ 'query' ] ) && $parsed [ 'query' ] ) {
2014-03-12 17:12:15 +01:00
wp_parse_str ( $parsed [ 'query' ], $qv );
$url = add_query_arg ( $qv , $url );
}
return $url ;
}
return $src ;
}
2009-01-14 15:18:51 +01:00
/**
2009-01-26 13:59:10 +01:00
* Prints the script queue in the HTML head on admin pages .
2009-01-14 15:18:51 +01:00
*
* Postpones the scripts that were queued for the footer .
2009-01-26 13:59:10 +01:00
* print_footer_scripts () is called in the footer to print these scripts .
2009-01-14 15:18:51 +01:00
*
2013-12-24 19:57:12 +01:00
* @ since 2.8 . 0
2013-10-27 18:51:09 +01:00
*
2009-01-14 15:18:51 +01:00
* @ see wp_print_scripts ()
2015-05-27 21:34:27 +02:00
*
* @ global bool $concatenate_scripts
*
* @ return array
2009-01-14 15:18:51 +01:00
*/
2009-01-26 13:59:10 +01:00
function print_head_scripts () {
2015-05-27 21:34:27 +02:00
global $concatenate_scripts ;
2009-02-23 09:47:49 +01:00
2017-12-01 00:11:00 +01:00
if ( ! did_action ( 'wp_print_scripts' ) ) {
2013-10-27 18:51:09 +01:00
/** This action is documented in wp-includes/functions.wp-scripts.php */
do_action ( 'wp_print_scripts' );
}
2009-01-26 13:59:10 +01:00
2015-05-27 21:34:27 +02:00
$wp_scripts = wp_scripts ();
2009-01-14 15:18:51 +01:00
2009-01-26 13:59:10 +01:00
script_concat_settings ();
2009-01-14 15:18:51 +01:00
$wp_scripts -> do_concat = $concatenate_scripts ;
$wp_scripts -> do_head_items ();
2014-03-26 06:52:15 +01:00
/**
2016-05-22 20:50:28 +02:00
* Filters whether to print the head scripts .
2014-03-26 06:52:15 +01:00
*
* @ since 2.8 . 0
*
* @ param bool $print Whether to print the head scripts . Default true .
*/
if ( apply_filters ( 'print_head_scripts' , true ) ) {
2009-02-23 09:47:49 +01:00
_print_scripts ();
2014-03-26 06:52:15 +01:00
}
2009-01-14 15:18:51 +01:00
2009-01-26 13:59:10 +01:00
$wp_scripts -> reset ();
2009-01-14 15:18:51 +01:00
return $wp_scripts -> done ;
}
/**
2011-07-25 02:36:06 +02:00
* Prints the scripts that were queued for the footer or too late for the HTML head .
2009-01-14 15:18:51 +01:00
*
2013-12-24 19:57:12 +01:00
* @ since 2.8 . 0
2015-05-27 21:34:27 +02:00
*
* @ global WP_Scripts $wp_scripts
* @ global bool $concatenate_scripts
*
* @ return array
2009-01-14 15:18:51 +01:00
*/
2009-01-26 13:59:10 +01:00
function print_footer_scripts () {
2009-01-14 15:18:51 +01:00
global $wp_scripts , $concatenate_scripts ;
2015-01-16 02:06:24 +01:00
if ( ! ( $wp_scripts instanceof WP_Scripts ) ) {
2009-01-14 15:18:51 +01:00
return array (); // No need to run if not instantiated.
2015-01-16 02:06:24 +01:00
}
2009-01-26 13:59:10 +01:00
script_concat_settings ();
2009-01-14 15:18:51 +01:00
$wp_scripts -> do_concat = $concatenate_scripts ;
$wp_scripts -> do_footer_items ();
2014-03-26 06:52:15 +01:00
/**
2016-05-22 20:50:28 +02:00
* Filters whether to print the footer scripts .
2014-03-26 06:52:15 +01:00
*
* @ since 2.8 . 0
*
* @ param bool $print Whether to print the footer scripts . Default true .
*/
if ( apply_filters ( 'print_footer_scripts' , true ) ) {
2009-02-23 09:47:49 +01:00
_print_scripts ();
2014-03-26 06:52:15 +01:00
}
2009-01-14 15:18:51 +01:00
2009-01-26 13:59:10 +01:00
$wp_scripts -> reset ();
2009-01-14 15:18:51 +01:00
return $wp_scripts -> done ;
}
2011-07-25 02:36:06 +02:00
/**
2022-04-20 16:09:11 +02:00
* Prints scripts ( internal use only )
2015-01-13 01:51:21 +01:00
*
* @ ignore
2015-05-27 21:34:27 +02:00
*
* @ global WP_Scripts $wp_scripts
* @ global bool $compress_scripts
2011-07-25 02:36:06 +02:00
*/
2009-02-23 09:47:49 +01:00
function _print_scripts () {
2009-01-14 15:18:51 +01:00
global $wp_scripts , $compress_scripts ;
$zip = $compress_scripts ? 1 : 0 ;
2017-12-01 00:11:00 +01:00
if ( $zip && defined ( 'ENFORCE_GZIP' ) && ENFORCE_GZIP ) {
2009-01-26 13:59:10 +01:00
$zip = 'gzip' ;
2017-12-01 00:11:00 +01:00
}
2009-01-14 15:18:51 +01:00
2019-09-18 16:50:56 +02:00
$concat = trim ( $wp_scripts -> concat , ', ' );
$type_attr = current_theme_supports ( 'html5' , 'script' ) ? '' : " type='text/javascript' " ;
2009-01-14 15:18:51 +01:00
2019-05-28 05:32:52 +02:00
if ( $concat ) {
2017-12-01 00:11:00 +01:00
if ( ! empty ( $wp_scripts -> print_code ) ) {
2019-09-18 16:50:56 +02:00
echo " \n <script { $type_attr } > \n " ;
2020-01-29 01:45:18 +01:00
echo " /* <![CDATA[ */ \n " ; // Not needed in HTML 5.
2009-01-14 15:18:51 +01:00
echo $wp_scripts -> print_code ;
echo " /* ]]> */ \n " ;
echo " </script> \n " ;
}
2019-05-28 05:32:52 +02:00
$concat = str_split ( $concat , 128 );
2019-05-28 04:43:55 +02:00
$concatenated = '' ;
2012-12-05 19:57:56 +01:00
2019-05-28 04:43:55 +02:00
foreach ( $concat as $key => $chunk ) {
$concatenated .= " &load%5Bchunk_ { $key } %5D= { $chunk } " ;
}
$src = $wp_scripts -> base_url . " /wp-admin/load-scripts.php?c= { $zip } " . $concatenated . '&ver=' . $wp_scripts -> default_version ;
2019-09-18 16:50:56 +02:00
echo " <script { $type_attr } src=' " . esc_attr ( $src ) . " '></script> \n " ;
2009-01-14 15:18:51 +01:00
}
2017-12-01 00:11:00 +01:00
if ( ! empty ( $wp_scripts -> print_html ) ) {
2009-01-14 15:18:51 +01:00
echo $wp_scripts -> print_html ;
2017-12-01 00:11:00 +01:00
}
2009-01-26 13:59:10 +01:00
}
2009-01-15 20:50:23 +01:00
2009-01-26 13:59:10 +01:00
/**
* Prints the script queue in the HTML head on the front end .
*
* Postpones the scripts that were queued for the footer .
* wp_print_footer_scripts () is called in the footer to print these scripts .
*
2013-12-24 19:57:12 +01:00
* @ since 2.8 . 0
2015-05-27 21:34:27 +02:00
*
* @ global WP_Scripts $wp_scripts
*
* @ return array
2009-01-26 13:59:10 +01:00
*/
function wp_print_head_scripts () {
2021-10-27 20:21:58 +02:00
global $wp_scripts ;
2017-12-01 00:11:00 +01:00
if ( ! did_action ( 'wp_print_scripts' ) ) {
2013-10-27 18:51:09 +01:00
/** This action is documented in wp-includes/functions.wp-scripts.php */
do_action ( 'wp_print_scripts' );
}
2009-01-26 13:59:10 +01:00
2015-01-16 02:06:24 +01:00
if ( ! ( $wp_scripts instanceof WP_Scripts ) ) {
2020-01-29 01:45:18 +01:00
return array (); // No need to run if nothing is queued.
2015-01-16 02:06:24 +01:00
}
2021-10-27 20:21:58 +02:00
2009-01-26 13:59:10 +01:00
return print_head_scripts ();
2009-01-14 15:18:51 +01:00
}
2009-01-26 13:59:10 +01:00
/**
2011-08-26 22:31:30 +02:00
* Private , for use in * _footer_scripts hooks
2009-01-26 13:59:10 +01:00
*
2012-01-04 20:03:33 +01:00
* @ since 3.3 . 0
2009-01-26 13:59:10 +01:00
*/
2011-08-26 22:31:30 +02:00
function _wp_footer_scripts () {
2011-07-21 18:32:01 +02:00
print_late_styles ();
print_footer_scripts ();
2011-08-26 22:31:30 +02:00
}
2011-07-25 02:36:06 +02:00
2011-08-26 22:31:30 +02:00
/**
* Hooks to print the scripts and styles in the footer .
*
2013-12-24 19:57:12 +01:00
* @ since 2.8 . 0
2011-08-26 22:31:30 +02:00
*/
function wp_print_footer_scripts () {
2014-03-26 06:52:15 +01:00
/**
* Fires when footer scripts are printed .
*
* @ since 2.8 . 0
*/
do_action ( 'wp_print_footer_scripts' );
2009-01-26 13:59:10 +01:00
}
/**
2020-06-16 23:07:14 +02:00
* Wrapper for do_action ( 'wp_enqueue_scripts' ) .
2009-02-01 10:45:24 +01:00
*
2009-01-26 13:59:10 +01:00
* Allows plugins to queue scripts for the front end using wp_enqueue_script () .
* Runs first in wp_head () where all is_home (), is_page (), etc . functions are available .
*
2013-12-24 19:57:12 +01:00
* @ since 2.8 . 0
2009-01-26 13:59:10 +01:00
*/
function wp_enqueue_scripts () {
2014-03-26 06:52:15 +01:00
/**
* Fires when scripts and styles are enqueued .
*
* @ since 2.8 . 0
*/
do_action ( 'wp_enqueue_scripts' );
2009-01-26 13:59:10 +01:00
}
2011-07-25 02:36:06 +02:00
/**
* Prints the styles queue in the HTML head on admin pages .
2011-08-30 03:12:26 +02:00
*
2013-12-24 19:57:12 +01:00
* @ since 2.8 . 0
2015-05-27 21:34:27 +02:00
*
* @ global bool $concatenate_scripts
*
* @ return array
2011-07-25 02:36:06 +02:00
*/
2009-01-26 13:59:10 +01:00
function print_admin_styles () {
2015-05-27 21:34:27 +02:00
global $concatenate_scripts ;
2009-01-14 15:18:51 +01:00
2015-05-27 21:34:27 +02:00
$wp_styles = wp_styles ();
2009-01-14 15:18:51 +01:00
2009-01-26 13:59:10 +01:00
script_concat_settings ();
2009-01-14 15:18:51 +01:00
$wp_styles -> do_concat = $concatenate_scripts ;
2017-12-01 00:11:00 +01:00
$wp_styles -> do_items ( false );
2009-01-14 15:18:51 +01:00
2014-03-26 06:52:15 +01:00
/**
2016-05-22 20:50:28 +02:00
* Filters whether to print the admin styles .
2014-03-26 06:52:15 +01:00
*
* @ since 2.8 . 0
*
* @ param bool $print Whether to print the admin styles . Default true .
*/
if ( apply_filters ( 'print_admin_styles' , true ) ) {
2011-07-21 18:32:01 +02:00
_print_styles ();
2014-03-26 06:52:15 +01:00
}
2009-01-14 15:18:51 +01:00
2011-07-21 18:32:01 +02:00
$wp_styles -> reset ();
return $wp_styles -> done ;
}
2011-07-25 02:36:06 +02:00
/**
* Prints the styles that were queued too late for the HTML head .
*
2012-01-04 20:03:33 +01:00
* @ since 3.3 . 0
2015-05-27 21:34:27 +02:00
*
* @ global WP_Styles $wp_styles
* @ global bool $concatenate_scripts
*
* @ return array | void
2011-07-25 02:36:06 +02:00
*/
2011-07-21 18:32:01 +02:00
function print_late_styles () {
global $wp_styles , $concatenate_scripts ;
2015-01-16 02:06:24 +01:00
if ( ! ( $wp_styles instanceof WP_Styles ) ) {
2011-07-21 18:32:01 +02:00
return ;
2015-01-16 02:06:24 +01:00
}
2011-07-21 18:32:01 +02:00
2016-01-18 10:57:29 +01:00
script_concat_settings ();
2011-07-21 18:32:01 +02:00
$wp_styles -> do_concat = $concatenate_scripts ;
$wp_styles -> do_footer_items ();
2014-03-26 06:52:15 +01:00
/**
2016-05-22 20:50:28 +02:00
* Filters whether to print the styles queued too late for the HTML head .
2014-03-26 06:52:15 +01:00
*
* @ since 3.3 . 0
*
* @ param bool $print Whether to print the 'late' styles . Default true .
*/
if ( apply_filters ( 'print_late_styles' , true ) ) {
2011-07-21 18:32:01 +02:00
_print_styles ();
2014-03-26 06:52:15 +01:00
}
2009-01-14 15:18:51 +01:00
2011-07-21 18:32:01 +02:00
$wp_styles -> reset ();
2009-01-14 15:18:51 +01:00
return $wp_styles -> done ;
}
2011-07-25 02:36:06 +02:00
/**
2022-04-20 16:09:11 +02:00
* Prints styles ( internal use only ) .
2015-01-13 01:51:21 +01:00
*
* @ ignore
2016-02-26 15:39:26 +01:00
* @ since 3.3 . 0
2015-05-27 21:34:27 +02:00
*
* @ global bool $compress_css
2011-07-25 02:36:06 +02:00
*/
2011-07-21 18:32:01 +02:00
function _print_styles () {
2015-05-27 21:34:27 +02:00
global $compress_css ;
$wp_styles = wp_styles ();
2011-07-21 18:32:01 +02:00
$zip = $compress_css ? 1 : 0 ;
2017-12-01 00:11:00 +01:00
if ( $zip && defined ( 'ENFORCE_GZIP' ) && ENFORCE_GZIP ) {
2011-07-21 18:32:01 +02:00
$zip = 'gzip' ;
2017-12-01 00:11:00 +01:00
}
2011-07-21 18:32:01 +02:00
2019-09-18 16:50:56 +02:00
$concat = trim ( $wp_styles -> concat , ', ' );
$type_attr = current_theme_supports ( 'html5' , 'style' ) ? '' : ' type="text/css"' ;
2019-05-28 05:32:52 +02:00
if ( $concat ) {
2011-07-21 18:32:01 +02:00
$dir = $wp_styles -> text_direction ;
2011-12-21 06:40:09 +01:00
$ver = $wp_styles -> default_version ;
2016-01-18 10:57:29 +01:00
2019-05-28 05:32:52 +02:00
$concat = str_split ( $concat , 128 );
2019-05-28 04:43:55 +02:00
$concatenated = '' ;
foreach ( $concat as $key => $chunk ) {
$concatenated .= " &load%5Bchunk_ { $key } %5D= { $chunk } " ;
}
2016-01-18 10:57:29 +01:00
2019-05-28 04:43:55 +02:00
$href = $wp_styles -> base_url . " /wp-admin/load-styles.php?c= { $zip } &dir= { $dir } " . $concatenated . '&ver=' . $ver ;
2019-09-18 16:50:56 +02:00
echo " <link rel='stylesheet' href=' " . esc_attr ( $href ) . " ' { $type_attr } media='all' /> \n " ;
2011-07-25 02:36:06 +02:00
2017-12-01 00:11:00 +01:00
if ( ! empty ( $wp_styles -> print_code ) ) {
2019-09-18 16:50:56 +02:00
echo " <style { $type_attr } > \n " ;
2011-07-25 02:36:06 +02:00
echo $wp_styles -> print_code ;
echo " \n </style> \n " ;
}
2011-07-21 18:32:01 +02:00
}
2017-12-01 00:11:00 +01:00
if ( ! empty ( $wp_styles -> print_html ) ) {
2011-07-21 18:32:01 +02:00
echo $wp_styles -> print_html ;
2017-12-01 00:11:00 +01:00
}
2011-07-21 18:32:01 +02:00
}
2011-07-25 02:36:06 +02:00
/**
2022-04-20 16:09:11 +02:00
* Determines the concatenation and compression settings for scripts and styles .
2011-08-30 03:12:26 +02:00
*
2013-12-24 19:57:12 +01:00
* @ since 2.8 . 0
2015-05-27 21:34:27 +02:00
*
* @ global bool $concatenate_scripts
* @ global bool $compress_scripts
* @ global bool $compress_css
2011-07-25 02:36:06 +02:00
*/
2009-01-14 15:18:51 +01:00
function script_concat_settings () {
2009-01-17 15:08:15 +01:00
global $concatenate_scripts , $compress_scripts , $compress_css ;
2009-01-14 15:18:51 +01:00
2019-05-28 05:32:52 +02:00
$compressed_output = ( ini_get ( 'zlib.output_compression' ) || 'ob_gzhandler' === ini_get ( 'output_handler' ) );
2009-02-01 10:45:24 +01:00
2021-12-21 00:53:01 +01:00
$can_compress_scripts = ! wp_installing () && get_site_option ( 'can_compress_scripts' );
2017-12-01 00:11:00 +01:00
if ( ! isset ( $concatenate_scripts ) ) {
$concatenate_scripts = defined ( 'CONCATENATE_SCRIPTS' ) ? CONCATENATE_SCRIPTS : true ;
if ( ( ! is_admin () && ! did_action ( 'login_init' ) ) || ( defined ( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ) {
2009-01-26 13:59:10 +01:00
$concatenate_scripts = false ;
2017-12-01 00:11:00 +01:00
}
2009-01-26 13:59:10 +01:00
}
2009-01-14 15:18:51 +01:00
2017-12-01 00:11:00 +01:00
if ( ! isset ( $compress_scripts ) ) {
$compress_scripts = defined ( 'COMPRESS_SCRIPTS' ) ? COMPRESS_SCRIPTS : true ;
2021-12-21 00:53:01 +01:00
if ( $compress_scripts && ( ! $can_compress_scripts || $compressed_output ) ) {
2009-01-26 13:59:10 +01:00
$compress_scripts = false ;
2017-12-01 00:11:00 +01:00
}
2009-01-26 13:59:10 +01:00
}
2009-01-17 15:08:15 +01:00
2017-12-01 00:11:00 +01:00
if ( ! isset ( $compress_css ) ) {
$compress_css = defined ( 'COMPRESS_CSS' ) ? COMPRESS_CSS : true ;
2021-12-21 00:53:01 +01:00
if ( $compress_css && ( ! $can_compress_scripts || $compressed_output ) ) {
2009-01-26 13:59:10 +01:00
$compress_css = false ;
2017-12-01 00:11:00 +01:00
}
2009-01-26 13:59:10 +01:00
}
2009-01-14 15:18:51 +01:00
}
2018-12-14 05:53:54 +01:00
/**
* Handles the enqueueing of block scripts and styles that are common to both
* the editor and the front - end .
*
* @ since 5.0 . 0
*/
function wp_common_block_scripts_and_styles () {
2020-10-08 05:36:04 +02:00
if ( is_admin () && ! wp_should_load_block_editor_scripts_and_styles () ) {
2018-12-14 05:53:54 +01:00
return ;
}
wp_enqueue_style ( 'wp-block-library' );
Script Loader: Fix performance issues in `wp_common_block_scripts_and_styles`.
In [52069] the function `wp_common_block_scripts_and_styles` was changed load individual theme stylesheets, if the current theme supports block styles and loading separate core block assets. To do this, the function calls many expensive file operation functions, such as `glob`, `file_exists` and `file_get_contents`. This is wasteful, as these functions are loaded on every page request, even request that do not include blocks, like REST API calls. In [56044] all core block styles are registered in a single place. In `register_core_block_style_handles` calls `glob` to get all css styles in block directories. While registering style and editor styles, also register block theme styles, under a new style handle. Example `wp-block-avatar-theme`. If the current theme supports block styles, also request the block to enqueue the theme style on the front end. As these new stylesheets have a path attribute set, the function `wp_maybe_inline_styles` will automatically inline the styles for you.
Props spacedmonkey, flixos90, oandregal, costdev, audrasjb, mukesh27.
Fixes #58560.
Built from https://develop.svn.wordpress.org/trunk@56064
git-svn-id: http://core.svn.wordpress.org/trunk@55576 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-06-27 13:28:28 +02:00
if ( current_theme_supports ( 'wp-block-styles' ) && ! wp_should_load_separate_core_block_assets () ) {
wp_enqueue_style ( 'wp-block-library-theme' );
2018-12-14 05:53:54 +01:00
}
/**
* Fires after enqueuing block assets for both editor and front - end .
*
* Call `add_action` on any hook before 'wp_enqueue_scripts' .
*
* In the function call you supply , simply use `wp_enqueue_script` and
* `wp_enqueue_style` to add your functionality to the Gutenberg editor .
*
* @ since 5.0 . 0
*/
2019-05-28 05:32:52 +02:00
do_action ( 'enqueue_block_assets' );
2018-12-14 05:53:54 +01:00
}
2022-09-10 14:38:12 +02:00
/**
* Applies a filter to the list of style nodes that comes from WP_Theme_JSON :: get_style_nodes () .
*
* This particular filter removes all of the blocks from the array .
*
* We want WP_Theme_JSON to be ignorant of the implementation details of how the CSS is being used .
* This filter allows us to modify the output of WP_Theme_JSON depending on whether or not we are
* loading separate assets , without making the class aware of that detail .
*
* @ since 6.1 . 0
*
* @ param array $nodes The nodes to filter .
* @ return array A filtered array of style nodes .
*/
function wp_filter_out_block_nodes ( $nodes ) {
return array_filter (
$nodes ,
2023-09-12 17:23:18 +02:00
static function ( $node ) {
2022-09-10 14:38:12 +02:00
return ! in_array ( 'blocks' , $node [ 'path' ], true );
},
ARRAY_FILTER_USE_BOTH
);
}
2021-05-24 19:39:57 +02:00
/**
* Enqueues the global styles defined via theme . json .
*
* @ since 5.8 . 0
*/
function wp_enqueue_global_styles () {
2022-02-16 11:36:02 +01:00
$separate_assets = wp_should_load_separate_core_block_assets ();
$is_block_theme = wp_is_block_theme ();
$is_classic_theme = ! $is_block_theme ;
2021-07-02 20:47:58 +02:00
/*
* Global styles should be printed in the head when loading all styles combined .
* The footer should only be used to print global styles for classic themes with separate core assets enabled .
*
* See https :// core . trac . wordpress . org / ticket / 53494.
*/
2022-02-16 11:36:02 +01:00
if (
( $is_block_theme && doing_action ( 'wp_footer' ) ) ||
( $is_classic_theme && doing_action ( 'wp_footer' ) && ! $separate_assets ) ||
( $is_classic_theme && doing_action ( 'wp_enqueue_scripts' ) && $separate_assets )
) {
2021-07-02 20:47:58 +02:00
return ;
}
2022-09-10 14:38:12 +02:00
/*
Editor: Add missing `blocks` origin to `theme.json`.
This changeset updates the blocks origin name from core to blocks and adds it to the list of valid origins for `theme.json`.
(See the original fix in [https://github.com//pull/3319 Gutenberg's PR 44363]).
Why?
- This new origin was missing from the list.
- The `core` name is not reflective of what it does, as this data origin is related to block styles, whether they come with WordPress or third-party blocks.
- The existing filter for this piece of data is called `theme_json_blocks`, to reflect it filters "block" data.
- Though `core` origin was used in the past for `default`, this commit reverts it. Why? It was confusing. The goal is to use names that communicate what part of the pipeline are processing (`default > blocks > theme > custom`).
How?
- Renames the string, from `core` to `blocks`.
- Adds `blocks` to the list of valid origins.
- Verifies that the `$theme_json->get_stylesheet()` call uses the proper `$origins` at all times.
Follow-up to [54162], [54251].
Props oandregal, czapla, jorgefilipecosta, scruffian, bernhard-reiter hellofromTonya.
See #56467.
Built from https://develop.svn.wordpress.org/trunk@54408
git-svn-id: http://core.svn.wordpress.org/trunk@53967 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-10-07 11:40:13 +02:00
* If loading the CSS for each block separately , then load the theme . json CSS conditionally .
2022-09-10 14:38:12 +02:00
* This removes the CSS from the global - styles stylesheet and adds it to the inline CSS for each block .
Editor: Add missing `blocks` origin to `theme.json`.
This changeset updates the blocks origin name from core to blocks and adds it to the list of valid origins for `theme.json`.
(See the original fix in [https://github.com//pull/3319 Gutenberg's PR 44363]).
Why?
- This new origin was missing from the list.
- The `core` name is not reflective of what it does, as this data origin is related to block styles, whether they come with WordPress or third-party blocks.
- The existing filter for this piece of data is called `theme_json_blocks`, to reflect it filters "block" data.
- Though `core` origin was used in the past for `default`, this commit reverts it. Why? It was confusing. The goal is to use names that communicate what part of the pipeline are processing (`default > blocks > theme > custom`).
How?
- Renames the string, from `core` to `blocks`.
- Adds `blocks` to the list of valid origins.
- Verifies that the `$theme_json->get_stylesheet()` call uses the proper `$origins` at all times.
Follow-up to [54162], [54251].
Props oandregal, czapla, jorgefilipecosta, scruffian, bernhard-reiter hellofromTonya.
See #56467.
Built from https://develop.svn.wordpress.org/trunk@54408
git-svn-id: http://core.svn.wordpress.org/trunk@53967 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-10-07 11:40:13 +02:00
* This filter must be registered before calling wp_get_global_stylesheet ();
2022-09-10 14:38:12 +02:00
*/
2022-10-11 22:08:12 +02:00
add_filter ( 'wp_theme_json_get_style_nodes' , 'wp_filter_out_block_nodes' );
2022-09-10 14:38:12 +02:00
2021-11-08 22:45:58 +01:00
$stylesheet = wp_get_global_stylesheet ();
2021-05-24 19:39:57 +02:00
if ( empty ( $stylesheet ) ) {
return ;
}
2023-02-23 22:34:19 +01:00
wp_register_style ( 'global-styles' , false );
2021-05-24 19:39:57 +02:00
wp_add_inline_style ( 'global-styles' , $stylesheet );
wp_enqueue_style ( 'global-styles' );
Editor: Add missing `blocks` origin to `theme.json`.
This changeset updates the blocks origin name from core to blocks and adds it to the list of valid origins for `theme.json`.
(See the original fix in [https://github.com//pull/3319 Gutenberg's PR 44363]).
Why?
- This new origin was missing from the list.
- The `core` name is not reflective of what it does, as this data origin is related to block styles, whether they come with WordPress or third-party blocks.
- The existing filter for this piece of data is called `theme_json_blocks`, to reflect it filters "block" data.
- Though `core` origin was used in the past for `default`, this commit reverts it. Why? It was confusing. The goal is to use names that communicate what part of the pipeline are processing (`default > blocks > theme > custom`).
How?
- Renames the string, from `core` to `blocks`.
- Adds `blocks` to the list of valid origins.
- Verifies that the `$theme_json->get_stylesheet()` call uses the proper `$origins` at all times.
Follow-up to [54162], [54251].
Props oandregal, czapla, jorgefilipecosta, scruffian, bernhard-reiter hellofromTonya.
See #56467.
Built from https://develop.svn.wordpress.org/trunk@54408
git-svn-id: http://core.svn.wordpress.org/trunk@53967 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-10-07 11:40:13 +02:00
// Add each block as an inline css.
wp_add_global_styles_for_blocks ();
2021-05-24 19:39:57 +02:00
}
Editor: Add support for custom CSS in global styles.
This changeset introduces functions `wp_get_global_styles_custom_css()` and `wp_enqueue_global_styles_custom_css()`, which allow accessing and enqueuing custom CSS added via global styles.
Custom CSS via global styles is handled separately from custom CSS via the Customizer. If a site uses both features, the custom CSS from both sources will be loaded. The global styles custom CSS is then loaded after the Customizer custom CSS, so if there are any conflicts between the rules, the global styles take precedence.
Similarly to e.g. [55185], the result is cached in a non-persistent cache, except when `WP_DEBUG` is on to avoid interrupting the theme developer's workflow.
Props glendaviesnz, oandregal, ntsekouras, mamaduka, davidbaumwald, hellofromtonya, flixos90.
Fixes #57536.
Built from https://develop.svn.wordpress.org/trunk@55192
git-svn-id: http://core.svn.wordpress.org/trunk@54725 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-02 19:52:17 +01:00
/**
* Enqueues the global styles custom css defined via theme . json .
*
* @ since 6.2 . 0
*/
function wp_enqueue_global_styles_custom_css () {
if ( ! wp_is_block_theme () ) {
return ;
}
// Don't enqueue Customizer's custom CSS separately.
remove_action ( 'wp_head' , 'wp_custom_css_cb' , 101 );
$custom_css = wp_get_custom_css ();
$custom_css .= wp_get_global_styles_custom_css ();
if ( ! empty ( $custom_css ) ) {
wp_add_inline_style ( 'global-styles' , $custom_css );
}
}
2020-10-01 02:39:04 +02:00
/**
* Checks if the editor scripts and styles for all registered block types
* should be enqueued on the current screen .
*
2020-10-01 03:14:04 +02:00
* @ since 5.6 . 0
2020-10-01 02:39:04 +02:00
*
2021-10-27 20:21:58 +02:00
* @ global WP_Screen $current_screen WordPress current screen object .
*
2021-05-11 18:28:02 +02:00
* @ return bool Whether scripts and styles should be enqueued .
2020-10-01 02:39:04 +02:00
*/
2020-10-06 06:18:10 +02:00
function wp_should_load_block_editor_scripts_and_styles () {
2020-10-01 02:39:04 +02:00
global $current_screen ;
$is_block_editor_screen = ( $current_screen instanceof WP_Screen ) && $current_screen -> is_block_editor ();
/**
2021-05-11 18:28:02 +02:00
* Filters the flag that decides whether or not block editor scripts and styles
* are going to be enqueued on the current screen .
2020-10-01 02:39:04 +02:00
*
* @ since 5.6 . 0
*
2020-10-01 03:14:04 +02:00
* @ param bool $is_block_editor_screen Current value of the flag .
2020-10-01 02:39:04 +02:00
*/
return apply_filters ( 'should_load_block_editor_scripts_and_styles' , $is_block_editor_screen );
}
2021-05-11 18:28:02 +02:00
/**
2021-06-29 20:45:56 +02:00
* Checks whether separate styles should be loaded for core blocks on - render .
2021-05-11 18:28:02 +02:00
*
2021-06-29 13:12:02 +02:00
* When this function returns true , other functions ensure that core blocks
2021-06-29 20:45:56 +02:00
* only load their assets on - render , and each block loads its own , individual
* assets . Third - party blocks only load their assets when rendered .
2021-06-29 13:12:02 +02:00
*
2021-06-29 20:45:56 +02:00
* When this function returns false , all core block assets are loaded regardless
2021-06-29 13:12:02 +02:00
* of whether they are rendered in a page or not , because they are all part of
2021-06-29 20:45:56 +02:00
* the `block-library/style.css` file . Assets for third - party blocks are always
* enqueued regardless of whether they are rendered or not .
2021-06-29 13:12:02 +02:00
*
* This only affects front end and not the block editor screens .
*
* @ see wp_enqueue_registered_block_scripts_and_styles ()
* @ see register_block_style_handle ()
*
2021-05-11 18:28:02 +02:00
* @ since 5.8 . 0
*
2021-06-03 02:22:58 +02:00
* @ return bool Whether separate assets will be loaded .
2021-05-11 18:28:02 +02:00
*/
2021-05-17 16:28:04 +02:00
function wp_should_load_separate_core_block_assets () {
Bootstrap/Load: Introduce functions to check whether WordPress is serving a REST API request.
This changeset introduces two functions:
* `wp_is_serving_rest_request()` returns a boolean for whether WordPress is serving an actual REST API request.
* `wp_is_rest_endpoint()` returns a boolean for whether a WordPress REST API endpoint is currently being used. While this is always the case if `wp_is_serving_rest_request()` returns `true`, the function additionally covers the scenario of internal REST API requests, i.e. where WordPress calls a REST API endpoint within the same request.
Both functions should only be used after the `parse_request` action.
All relevant manual checks have been adjusted to use one of the new functions, depending on the use-case. They were all using the same constant check so far, while in fact some of them were intending to check for an actual REST API request while others were intending to check for REST endpoint usage.
A new filter `wp_is_rest_endpoint` can be used to alter the return value of the `wp_is_rest_endpoint()` function.
Props lots.0.logs, TimothyBlynJacobs, flixos90, joehoyle, peterwilsoncc, swissspidy, SergeyBiryukov, pento, mikejolley, iandunn, hellofromTonya, Cybr, petitphp.
Fixes #42061.
Built from https://develop.svn.wordpress.org/trunk@57312
git-svn-id: http://core.svn.wordpress.org/trunk@56818 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-19 18:40:09 +01:00
if ( is_admin () || is_feed () || wp_is_rest_endpoint () ) {
2021-05-11 18:28:02 +02:00
return false ;
}
/**
2021-06-29 20:45:56 +02:00
* Filters whether block styles should be loaded separately .
*
* Returning false loads all core block assets , regardless of whether they are rendered
* in a page or not . Returning true loads core block assets only when they are rendered .
2021-05-11 18:28:02 +02:00
*
* @ since 5.8 . 0
*
2021-06-03 02:22:58 +02:00
* @ param bool $load_separate_assets Whether separate assets will be loaded .
2021-06-29 20:45:56 +02:00
* Default false ( all block assets are loaded , even when not used ) .
2021-05-11 18:28:02 +02:00
*/
2021-05-17 16:28:04 +02:00
return apply_filters ( 'should_load_separate_core_block_assets' , false );
2021-05-11 18:28:02 +02:00
}
2018-12-14 05:53:54 +01:00
/**
* Enqueues registered block scripts and styles , depending on current rendered
* context ( only enqueuing editor scripts while in context of the editor ) .
*
* @ since 5.0 . 0
*
2019-08-04 04:03:55 +02:00
* @ global WP_Screen $current_screen WordPress current screen object .
2018-12-14 05:53:54 +01:00
*/
function wp_enqueue_registered_block_scripts_and_styles () {
global $current_screen ;
2021-05-17 16:28:04 +02:00
if ( wp_should_load_separate_core_block_assets () ) {
2021-05-11 11:43:08 +02:00
return ;
}
2022-09-14 12:52:08 +02:00
$load_editor_scripts_and_styles = is_admin () && wp_should_load_block_editor_scripts_and_styles ();
2018-12-14 05:53:54 +01:00
$block_registry = WP_Block_Type_Registry :: get_instance ();
foreach ( $block_registry -> get_all_registered () as $block_name => $block_type ) {
2022-09-14 12:52:08 +02:00
// Front-end and editor styles.
foreach ( $block_type -> style_handles as $style_handle ) {
wp_enqueue_style ( $style_handle );
2018-12-14 05:53:54 +01:00
}
2022-09-14 12:52:08 +02:00
// Front-end and editor scripts.
foreach ( $block_type -> script_handles as $script_handle ) {
wp_enqueue_script ( $script_handle );
2018-12-14 05:53:54 +01:00
}
2022-09-14 12:52:08 +02:00
if ( $load_editor_scripts_and_styles ) {
// Editor styles.
foreach ( $block_type -> editor_style_handles as $editor_style_handle ) {
wp_enqueue_style ( $editor_style_handle );
}
2018-12-14 05:53:54 +01:00
2022-09-14 12:52:08 +02:00
// Editor scripts.
foreach ( $block_type -> editor_script_handles as $editor_script_handle ) {
wp_enqueue_script ( $editor_script_handle );
}
2018-12-14 05:53:54 +01:00
}
}
}
2019-09-14 20:21:54 +02:00
/**
* Function responsible for enqueuing the styles required for block styles functionality on the editor and on the frontend .
*
* @ since 5.3 . 0
2021-10-27 20:21:58 +02:00
*
* @ global WP_Styles $wp_styles
2019-09-14 20:21:54 +02:00
*/
function enqueue_block_styles_assets () {
2021-10-27 20:21:58 +02:00
global $wp_styles ;
2019-09-14 20:21:54 +02:00
$block_styles = WP_Block_Styles_Registry :: get_instance () -> get_all_registered ();
2021-07-22 10:38:04 +02:00
foreach ( $block_styles as $block_name => $styles ) {
2019-09-14 20:21:54 +02:00
foreach ( $styles as $style_properties ) {
if ( isset ( $style_properties [ 'style_handle' ] ) ) {
2021-07-22 10:38:04 +02:00
// If the site loads separate styles per-block, enqueue the stylesheet on render.
if ( wp_should_load_separate_core_block_assets () ) {
add_filter (
'render_block' ,
2023-09-12 17:23:18 +02:00
static function ( $html , $block ) use ( $block_name , $style_properties ) {
2021-11-28 22:12:06 +01:00
if ( $block [ 'blockName' ] === $block_name ) {
wp_enqueue_style ( $style_properties [ 'style_handle' ] );
}
2021-07-22 10:38:04 +02:00
return $html ;
2021-11-28 22:12:06 +01:00
},
10 ,
2
2021-07-22 10:38:04 +02:00
);
} else {
wp_enqueue_style ( $style_properties [ 'style_handle' ] );
}
2019-09-14 20:21:54 +02:00
}
if ( isset ( $style_properties [ 'inline_style' ] ) ) {
2021-07-22 10:38:04 +02:00
// Default to "wp-block-library".
$handle = 'wp-block-library' ;
// If the site loads separate styles per-block, check if the block has a stylesheet registered.
if ( wp_should_load_separate_core_block_assets () ) {
$block_stylesheet_handle = generate_block_asset_handle ( $block_name , 'style' );
2021-10-27 20:21:58 +02:00
2021-07-22 10:38:04 +02:00
if ( isset ( $wp_styles -> registered [ $block_stylesheet_handle ] ) ) {
$handle = $block_stylesheet_handle ;
}
}
// Add inline styles to the calculated handle.
wp_add_inline_style ( $handle , $style_properties [ 'inline_style' ] );
2019-09-14 20:21:54 +02:00
}
}
}
}
/**
* Function responsible for enqueuing the assets required for block styles functionality on the editor .
*
* @ since 5.3 . 0
*/
function enqueue_editor_block_styles_assets () {
$block_styles = WP_Block_Styles_Registry :: get_instance () -> get_all_registered ();
$register_script_lines = array ( '( function() {' );
foreach ( $block_styles as $block_name => $styles ) {
foreach ( $styles as $style_properties ) {
2021-04-13 10:04:13 +02:00
$block_style = array (
'name' => $style_properties [ 'name' ],
'label' => $style_properties [ 'label' ],
);
if ( isset ( $style_properties [ 'is_default' ] ) ) {
$block_style [ 'isDefault' ] = $style_properties [ 'is_default' ];
}
2019-09-14 20:21:54 +02:00
$register_script_lines [] = sprintf (
' wp.blocks.registerBlockStyle( \'%s\', %s );' ,
$block_name ,
2021-04-13 10:04:13 +02:00
wp_json_encode ( $block_style )
2019-09-14 20:21:54 +02:00
);
}
}
$register_script_lines [] = '} )();' ;
$inline_script = implode ( " \n " , $register_script_lines );
2023-09-13 22:52:22 +02:00
wp_register_script ( 'wp-block-styles' , false , array ( 'wp-blocks' ), true , array ( 'in_footer' => true ) );
2019-09-14 20:21:54 +02:00
wp_add_inline_script ( 'wp-block-styles' , $inline_script );
wp_enqueue_script ( 'wp-block-styles' );
}
2020-07-21 17:38:03 +02:00
/**
* Enqueues the assets required for the block directory within the block editor .
*
* @ since 5.5 . 0
*/
function wp_enqueue_editor_block_directory_assets () {
wp_enqueue_script ( 'wp-block-directory' );
wp_enqueue_style ( 'wp-block-directory' );
}
2021-02-23 03:00:06 +01:00
2021-04-01 13:46:09 +02:00
/**
* Enqueues the assets required for the format library within the block editor .
*
* @ since 5.8 . 0
*/
function wp_enqueue_editor_format_library_assets () {
wp_enqueue_script ( 'wp-format-library' );
wp_enqueue_style ( 'wp-format-library' );
}
2021-02-23 03:00:06 +01:00
/**
* Sanitizes an attributes array into an attributes string to be placed inside a `<script>` tag .
*
* Automatically injects type attribute if needed .
* Used by { @ see wp_get_script_tag ()} and { @ see wp_get_inline_script_tag ()} .
*
* @ since 5.7 . 0
*
* @ param array $attributes Key - value pairs representing `<script>` tag attributes .
* @ return string String made of sanitized `<script>` tag attributes .
*/
function wp_sanitize_script_attributes ( $attributes ) {
$html5_script_support = ! is_admin () && ! current_theme_supports ( 'html5' , 'script' );
$attributes_string = '' ;
Docs: Replace multiple single line comments with multi-line comments.
This changeset updates various comments as per WordPress PHP Inline Documentation Standards.
See https://developer.wordpress.org/coding-standards/inline-documentation-standards/php/#5-inline-comments.
Follow-up to [56174], [56175], [56176], [56177], [56178], [56179], [56180], [56191], [56192], [56193].
Props costdev, audrasjb.
See #58459.
Built from https://develop.svn.wordpress.org/trunk@56194
git-svn-id: http://core.svn.wordpress.org/trunk@55706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-11 01:11:22 +02:00
/*
* If HTML5 script tag is supported , only the attribute name is added
* to $attributes_string for entries with a boolean value , and that are true .
*/
2021-02-23 03:00:06 +01:00
foreach ( $attributes as $attribute_name => $attribute_value ) {
if ( is_bool ( $attribute_value ) ) {
if ( $attribute_value ) {
2021-03-25 01:27:06 +01:00
$attributes_string .= $html5_script_support ? sprintf ( ' %1$s="%2$s"' , esc_attr ( $attribute_name ), esc_attr ( $attribute_name ) ) : ' ' . esc_attr ( $attribute_name );
2021-02-23 03:00:06 +01:00
}
} else {
$attributes_string .= sprintf ( ' %1$s="%2$s"' , esc_attr ( $attribute_name ), esc_attr ( $attribute_value ) );
}
}
return $attributes_string ;
}
/**
* Formats `<script>` loader tags .
*
* It is possible to inject attributes in the `<script>` tag via the { @ see 'wp_script_attributes' } filter .
* Automatically injects type attribute if needed .
*
* @ since 5.7 . 0
*
* @ param array $attributes Key - value pairs representing `<script>` tag attributes .
* @ return string String containing `<script>` opening and closing tags .
*/
function wp_get_script_tag ( $attributes ) {
if ( ! isset ( $attributes [ 'type' ] ) && ! is_admin () && ! current_theme_supports ( 'html5' , 'script' ) ) {
Script Loader: Use `wp_get_script_tag()` and `wp_get_inline_script_tag()`/`wp_print_inline_script_tag()` helper functions to output scripts on the frontend and login screen.
Using script tag helper functions allows plugins to employ the `wp_script_attributes` and `wp_inline_script_attributes` filters to inject the `nonce` attribute to apply Content Security Policy (e.g. Strict CSP). Use of helper functions also simplifies logic in `WP_Scripts`.
* Update `wp_get_inline_script_tag()` to wrap inline script in CDATA blocks for XHTML-compatibility when not using HTML5.
* Ensure the `type` attribute is printed first in `wp_get_inline_script_tag()` for back-compat.
* Wrap existing `<script>` tags in output buffering to retain IDE supports.
* In `wp_get_inline_script_tag()`, append the newline to `$javascript` before it is passed into the `wp_inline_script_attributes` filter so that the CSP hash can be computed properly.
* In `the_block_template_skip_link()`, opt to enqueue the inline script rather than print it.
* Add `ext-php` to `composer.json` under `suggest` as previously it was an undeclared dependency for running PHPUnit tests.
* Update tests to rely on `DOMDocument` to compare script markup, normalizing unsemantic differences.
Props westonruter, spacedmonkey, flixos90, 10upsimon, dmsnell, mukesh27, joemcgill, swissspidy, azaozz.
Fixes #58664.
See #39941.
Built from https://develop.svn.wordpress.org/trunk@56687
git-svn-id: http://core.svn.wordpress.org/trunk@56199 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-09-25 23:05:21 +02:00
// Keep the type attribute as the first for legacy reasons (it has always been this way in core).
$attributes = array_merge (
array ( 'type' => 'text/javascript' ),
$attributes
);
2021-02-23 03:00:06 +01:00
}
/**
* Filters attributes to be added to a script tag .
*
* @ since 5.7 . 0
*
* @ param array $attributes Key - value pairs representing `<script>` tag attributes .
* Only the attribute name is added to the `<script>` tag for
* entries with a boolean value , and that are true .
*/
$attributes = apply_filters ( 'wp_script_attributes' , $attributes );
return sprintf ( " <script%s></script> \n " , wp_sanitize_script_attributes ( $attributes ) );
}
/**
* Prints formatted `<script>` loader tag .
*
* It is possible to inject attributes in the `<script>` tag via the { @ see 'wp_script_attributes' } filter .
* Automatically injects type attribute if needed .
*
* @ since 5.7 . 0
*
* @ param array $attributes Key - value pairs representing `<script>` tag attributes .
*/
function wp_print_script_tag ( $attributes ) {
echo wp_get_script_tag ( $attributes );
}
/**
2024-01-27 02:04:14 +01:00
* Constructs an inline script tag .
2021-02-23 03:00:06 +01:00
*
* It is possible to inject attributes in the `<script>` tag via the { @ see 'wp_script_attributes' } filter .
* Automatically injects type attribute if needed .
*
* @ since 5.7 . 0
*
2024-01-27 02:04:14 +01:00
* @ param string $data Data for script tag : JavaScript , importmap , speculationrules , etc .
2021-11-10 19:41:03 +01:00
* @ param array $attributes Optional . Key - value pairs representing `<script>` tag attributes .
2021-02-23 03:00:06 +01:00
* @ return string String containing inline JavaScript code wrapped around `<script>` tag .
*/
2024-01-27 02:04:14 +01:00
function wp_get_inline_script_tag ( $data , $attributes = array () ) {
Script Loader: Use `wp_get_script_tag()` and `wp_get_inline_script_tag()`/`wp_print_inline_script_tag()` helper functions to output scripts on the frontend and login screen.
Using script tag helper functions allows plugins to employ the `wp_script_attributes` and `wp_inline_script_attributes` filters to inject the `nonce` attribute to apply Content Security Policy (e.g. Strict CSP). Use of helper functions also simplifies logic in `WP_Scripts`.
* Update `wp_get_inline_script_tag()` to wrap inline script in CDATA blocks for XHTML-compatibility when not using HTML5.
* Ensure the `type` attribute is printed first in `wp_get_inline_script_tag()` for back-compat.
* Wrap existing `<script>` tags in output buffering to retain IDE supports.
* In `wp_get_inline_script_tag()`, append the newline to `$javascript` before it is passed into the `wp_inline_script_attributes` filter so that the CSP hash can be computed properly.
* In `the_block_template_skip_link()`, opt to enqueue the inline script rather than print it.
* Add `ext-php` to `composer.json` under `suggest` as previously it was an undeclared dependency for running PHPUnit tests.
* Update tests to rely on `DOMDocument` to compare script markup, normalizing unsemantic differences.
Props westonruter, spacedmonkey, flixos90, 10upsimon, dmsnell, mukesh27, joemcgill, swissspidy, azaozz.
Fixes #58664.
See #39941.
Built from https://develop.svn.wordpress.org/trunk@56687
git-svn-id: http://core.svn.wordpress.org/trunk@56199 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-09-25 23:05:21 +02:00
$is_html5 = current_theme_supports ( 'html5' , 'script' ) || is_admin ();
if ( ! isset ( $attributes [ 'type' ] ) && ! $is_html5 ) {
// Keep the type attribute as the first for legacy reasons (it has always been this way in core).
$attributes = array_merge (
array ( 'type' => 'text/javascript' ),
$attributes
);
}
2023-09-29 21:47:21 +02:00
/*
* XHTML extracts the contents of the SCRIPT element and then the XML parser
* decodes character references and other syntax elements . This can lead to
* misinterpretation of the script contents or invalid XHTML documents .
*
* Wrapping the contents in a CDATA section instructs the XML parser not to
* transform the contents of the SCRIPT element before passing them to the
* JavaScript engine .
*
* Example :
*
* < script > console . log ( '…' ); </ script >
*
* In an HTML document this would print " … " to the console ,
* but in an XHTML document it would print " … " to the console .
*
* < script > console . log ( 'An image is <img> in HTML' ); </ script >
*
* In an HTML document this would print " An image is <img> in HTML " ,
* but it ' s an invalid XHTML document because it interprets the `<img>`
* as an empty tag missing its closing `/` .
*
* @ see https :// www . w3 . org / TR / xhtml1 / #h-4.8
*/
2024-01-23 18:56:12 +01:00
if (
! $is_html5 &&
(
! isset ( $attributes [ 'type' ] ) ||
'module' === $attributes [ 'type' ] ||
str_contains ( $attributes [ 'type' ], 'javascript' ) ||
str_contains ( $attributes [ 'type' ], 'ecmascript' ) ||
str_contains ( $attributes [ 'type' ], 'jscript' ) ||
str_contains ( $attributes [ 'type' ], 'livescript' )
)
) {
2023-09-29 21:47:21 +02:00
/*
* If the string `]]>` exists within the JavaScript it would break
* out of any wrapping CDATA section added here , so to start , it ' s
* necessary to escape that sequence which requires splitting the
* content into two CDATA sections wherever it ' s found .
*
* Note : it ' s only necessary to escape the closing `]]>` because
* an additional `<![CDATA[` leaves the contents unchanged .
*/
2024-01-27 02:04:14 +01:00
$data = str_replace ( ']]>' , ']]]]><![CDATA[>' , $data );
2023-09-29 21:47:21 +02:00
// Wrap the entire escaped script inside a CDATA section.
2024-01-27 02:04:14 +01:00
$data = sprintf ( " /* <![CDATA[ */ \n %s \n /* ]]> */ " , $data );
2021-02-23 03:00:06 +01:00
}
Script Loader: Use `wp_get_script_tag()` and `wp_get_inline_script_tag()`/`wp_print_inline_script_tag()` helper functions to output scripts on the frontend and login screen.
Using script tag helper functions allows plugins to employ the `wp_script_attributes` and `wp_inline_script_attributes` filters to inject the `nonce` attribute to apply Content Security Policy (e.g. Strict CSP). Use of helper functions also simplifies logic in `WP_Scripts`.
* Update `wp_get_inline_script_tag()` to wrap inline script in CDATA blocks for XHTML-compatibility when not using HTML5.
* Ensure the `type` attribute is printed first in `wp_get_inline_script_tag()` for back-compat.
* Wrap existing `<script>` tags in output buffering to retain IDE supports.
* In `wp_get_inline_script_tag()`, append the newline to `$javascript` before it is passed into the `wp_inline_script_attributes` filter so that the CSP hash can be computed properly.
* In `the_block_template_skip_link()`, opt to enqueue the inline script rather than print it.
* Add `ext-php` to `composer.json` under `suggest` as previously it was an undeclared dependency for running PHPUnit tests.
* Update tests to rely on `DOMDocument` to compare script markup, normalizing unsemantic differences.
Props westonruter, spacedmonkey, flixos90, 10upsimon, dmsnell, mukesh27, joemcgill, swissspidy, azaozz.
Fixes #58664.
See #39941.
Built from https://develop.svn.wordpress.org/trunk@56687
git-svn-id: http://core.svn.wordpress.org/trunk@56199 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-09-25 23:05:21 +02:00
2024-01-27 02:04:14 +01:00
$data = " \n " . trim ( $data , " \n \r " ) . " \n " ;
Script Loader: Use `wp_get_script_tag()` and `wp_get_inline_script_tag()`/`wp_print_inline_script_tag()` helper functions to output scripts on the frontend and login screen.
Using script tag helper functions allows plugins to employ the `wp_script_attributes` and `wp_inline_script_attributes` filters to inject the `nonce` attribute to apply Content Security Policy (e.g. Strict CSP). Use of helper functions also simplifies logic in `WP_Scripts`.
* Update `wp_get_inline_script_tag()` to wrap inline script in CDATA blocks for XHTML-compatibility when not using HTML5.
* Ensure the `type` attribute is printed first in `wp_get_inline_script_tag()` for back-compat.
* Wrap existing `<script>` tags in output buffering to retain IDE supports.
* In `wp_get_inline_script_tag()`, append the newline to `$javascript` before it is passed into the `wp_inline_script_attributes` filter so that the CSP hash can be computed properly.
* In `the_block_template_skip_link()`, opt to enqueue the inline script rather than print it.
* Add `ext-php` to `composer.json` under `suggest` as previously it was an undeclared dependency for running PHPUnit tests.
* Update tests to rely on `DOMDocument` to compare script markup, normalizing unsemantic differences.
Props westonruter, spacedmonkey, flixos90, 10upsimon, dmsnell, mukesh27, joemcgill, swissspidy, azaozz.
Fixes #58664.
See #39941.
Built from https://develop.svn.wordpress.org/trunk@56687
git-svn-id: http://core.svn.wordpress.org/trunk@56199 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-09-25 23:05:21 +02:00
2021-02-23 03:00:06 +01:00
/**
* Filters attributes to be added to a script tag .
*
* @ since 5.7 . 0
*
2021-11-10 19:41:03 +01:00
* @ param array $attributes Key - value pairs representing `<script>` tag attributes .
* Only the attribute name is added to the `<script>` tag for
* entries with a boolean value , and that are true .
2024-01-27 02:04:14 +01:00
* @ param string $data Inline data .
2021-02-23 03:00:06 +01:00
*/
2024-01-27 02:04:14 +01:00
$attributes = apply_filters ( 'wp_inline_script_attributes' , $attributes , $data );
2021-02-23 03:00:06 +01:00
2024-01-27 02:04:14 +01:00
return sprintf ( " <script%s>%s</script> \n " , wp_sanitize_script_attributes ( $attributes ), $data );
2021-02-23 03:00:06 +01:00
}
/**
2024-01-27 02:04:14 +01:00
* Prints an inline script tag .
2021-02-23 03:00:06 +01:00
*
* It is possible to inject attributes in the `<script>` tag via the { @ see 'wp_script_attributes' } filter .
* Automatically injects type attribute if needed .
*
* @ since 5.7 . 0
*
2024-01-27 02:04:14 +01:00
* @ param string $data Data for script tag : JavaScript , importmap , speculationrules , etc .
2021-02-23 03:00:06 +01:00
* @ param array $attributes Optional . Key - value pairs representing `<script>` tag attributes .
*/
2024-01-27 02:04:14 +01:00
function wp_print_inline_script_tag ( $data , $attributes = array () ) {
echo wp_get_inline_script_tag ( $data , $attributes );
2021-02-23 03:00:06 +01:00
}
2021-05-11 11:43:08 +02:00
/**
2021-05-11 18:28:02 +02:00
* Allows small styles to be inlined .
*
* This improves performance and sustainability , and is opt - in . Stylesheets can opt in
* by adding `path` data using `wp_style_add_data` , and defining the file ' s absolute path :
2021-05-11 11:43:08 +02:00
*
2021-05-11 18:28:02 +02:00
* wp_style_add_data ( $style_handle , 'path' , $file_path );
2021-05-11 11:43:08 +02:00
*
* @ since 5.8 . 0
*
2021-05-11 18:28:02 +02:00
* @ global WP_Styles $wp_styles
2021-05-11 11:43:08 +02:00
*/
function wp_maybe_inline_styles () {
2021-05-11 18:28:02 +02:00
global $wp_styles ;
2021-05-11 11:43:08 +02:00
$total_inline_limit = 20000 ;
/**
* The maximum size of inlined styles in bytes .
*
2021-06-03 02:22:58 +02:00
* @ since 5.8 . 0
*
2021-06-23 21:05:57 +02:00
* @ param int $total_inline_limit The file - size threshold , in bytes . Default 20000.
2021-05-11 11:43:08 +02:00
*/
$total_inline_limit = apply_filters ( 'styles_inline_size_limit' , $total_inline_limit );
$styles = array ();
// Build an array of styles that have a path defined.
foreach ( $wp_styles -> queue as $handle ) {
2023-06-13 11:53:23 +02:00
if ( ! isset ( $wp_styles -> registered [ $handle ] ) ) {
continue ;
}
2023-06-07 08:56:19 +02:00
$src = $wp_styles -> registered [ $handle ] -> src ;
2023-06-13 11:53:23 +02:00
$path = $wp_styles -> get_data ( $handle , 'path' );
2023-06-07 08:56:19 +02:00
if ( $path && $src ) {
$size = wp_filesize ( $path );
if ( ! $size ) {
continue ;
}
2021-05-11 11:43:08 +02:00
$styles [] = array (
'handle' => $handle ,
2023-06-07 08:56:19 +02:00
'src' => $src ,
'path' => $path ,
'size' => $size ,
2021-05-11 11:43:08 +02:00
);
}
}
if ( ! empty ( $styles ) ) {
// Reorder styles array based on size.
usort (
$styles ,
2023-09-12 17:23:18 +02:00
static function ( $a , $b ) {
2021-05-11 11:43:08 +02:00
return ( $a [ 'size' ] <= $b [ 'size' ] ) ? - 1 : 1 ;
}
);
2021-05-11 18:28:02 +02:00
/*
2021-05-11 11:43:08 +02:00
* The total inlined size .
*
* On each iteration of the loop , if a style gets added inline the value of this var increases
* to reflect the total size of inlined styles .
*/
$total_inline_size = 0 ;
// Loop styles.
foreach ( $styles as $style ) {
// Size check. Since styles are ordered by size, we can break the loop.
if ( $total_inline_size + $style [ 'size' ] > $total_inline_limit ) {
break ;
}
// Get the styles if we don't already have them.
$style [ 'css' ] = file_get_contents ( $style [ 'path' ] );
Docs: Replace multiple single line comments with multi-line comments.
This changeset updates various comments as per WordPress PHP Inline Documentation Standards.
See https://developer.wordpress.org/coding-standards/inline-documentation-standards/php/#5-inline-comments.
Follow-up to [56174], [56175], [56176], [56177], [56178], [56179], [56180], [56191], [56192], [56193].
Props costdev, audrasjb.
See #58459.
Built from https://develop.svn.wordpress.org/trunk@56194
git-svn-id: http://core.svn.wordpress.org/trunk@55706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-11 01:11:22 +02:00
/*
* Check if the style contains relative URLs that need to be modified .
* URLs relative to the stylesheet 's path should be converted to relative to the site' s root .
*/
2021-11-08 14:24:58 +01:00
$style [ 'css' ] = _wp_normalize_relative_css_links ( $style [ 'css' ], $style [ 'src' ] );
2021-05-11 11:43:08 +02:00
// Set `src` to `false` and add styles inline.
$wp_styles -> registered [ $style [ 'handle' ] ] -> src = false ;
if ( empty ( $wp_styles -> registered [ $style [ 'handle' ] ] -> extra [ 'after' ] ) ) {
$wp_styles -> registered [ $style [ 'handle' ] ] -> extra [ 'after' ] = array ();
}
array_unshift ( $wp_styles -> registered [ $style [ 'handle' ] ] -> extra [ 'after' ], $style [ 'css' ] );
// Add the styles size to the $total_inline_size var.
$total_inline_size += ( int ) $style [ 'size' ];
}
}
}
2021-05-25 16:20:57 +02:00
2021-11-08 14:24:58 +01:00
/**
2022-04-20 16:09:11 +02:00
* Makes URLs relative to the WordPress installation .
2021-11-08 14:24:58 +01:00
*
* @ since 5.9 . 0
* @ access private
*
* @ param string $css The CSS to make URLs relative to the WordPress installation .
* @ param string $stylesheet_url The URL to the stylesheet .
*
* @ return string The CSS with URLs made relative to the WordPress installation .
*/
function _wp_normalize_relative_css_links ( $css , $stylesheet_url ) {
2023-04-19 03:26:28 +02:00
return preg_replace_callback (
'#(url\s*\(\s*[\'"]?\s*)([^\'"\)]+)#' ,
static function ( $matches ) use ( $stylesheet_url ) {
list ( , $prefix , $url ) = $matches ;
2023-04-21 05:13:22 +02:00
// Short-circuit if the URL does not require normalization.
if (
str_starts_with ( $url , 'http:' ) ||
str_starts_with ( $url , 'https:' ) ||
str_starts_with ( $url , '//' ) ||
str_starts_with ( $url , '#' ) ||
2023-04-19 03:26:28 +02:00
str_starts_with ( $url , 'data:' )
2023-04-21 05:13:22 +02:00
) {
return $matches [ 0 ];
2021-11-08 14:24:58 +01:00
}
2023-04-21 05:13:22 +02:00
// Build the absolute URL.
$absolute_url = dirname ( $stylesheet_url ) . '/' . $url ;
$absolute_url = str_replace ( '/./' , '/' , $absolute_url );
// Convert to URL related to the site root.
$url = wp_make_link_relative ( $absolute_url );
2023-04-19 03:26:28 +02:00
return $prefix . $url ;
},
$css
);
2021-11-08 14:24:58 +01:00
}
2021-12-14 02:57:26 +01:00
/**
* Function that enqueues the CSS Custom Properties coming from theme . json .
*
* @ since 5.9 . 0
*/
function wp_enqueue_global_styles_css_custom_properties () {
2023-02-23 22:34:19 +01:00
wp_register_style ( 'global-styles-css-custom-properties' , false );
2021-12-14 02:57:26 +01:00
wp_add_inline_style ( 'global-styles-css-custom-properties' , wp_get_global_stylesheet ( array ( 'variables' ) ) );
wp_enqueue_style ( 'global-styles-css-custom-properties' );
}
2022-02-16 23:20:01 +01:00
/**
2022-09-01 17:45:09 +02:00
* Hooks inline styles in the proper place , depending on the active theme .
2022-02-16 23:20:01 +01:00
*
* @ since 5.9 . 1
2022-09-01 17:45:09 +02:00
* @ since 6.1 . 0 Added the `$priority` parameter .
2022-02-16 23:20:01 +01:00
*
2022-09-01 17:45:09 +02:00
* For block themes , styles are loaded in the head .
* For classic ones , styles are loaded in the body because the wp_head action happens before render_block .
2022-02-16 23:20:01 +01:00
*
* @ link https :// core . trac . wordpress . org / ticket / 53494.
*
2022-09-01 17:45:09 +02:00
* @ param string $style String containing the CSS styles to be added .
* @ param int $priority To set the priority for the add_action .
2022-02-16 23:20:01 +01:00
*/
2022-09-01 17:45:09 +02:00
function wp_enqueue_block_support_styles ( $style , $priority = 10 ) {
2022-02-16 23:20:01 +01:00
$action_hook_name = 'wp_footer' ;
if ( wp_is_block_theme () ) {
2022-03-29 15:28:08 +02:00
$action_hook_name = 'wp_head' ;
2022-02-16 23:20:01 +01:00
}
add_action (
$action_hook_name ,
static function () use ( $style ) {
echo " <style> $style </style> \n " ;
2022-09-01 17:45:09 +02:00
},
$priority
2022-02-16 23:20:01 +01:00
);
}
2022-04-20 15:53:16 +02:00
2022-09-19 22:56:10 +02:00
/**
* Fetches , processes and compiles stored core styles , then combines and renders them to the page .
* Styles are stored via the style engine API .
*
* @ link https :// developer . wordpress . org / block - editor / reference - guides / packages / packages - style - engine /
*
* @ since 6.1 . 0
*
* @ param array $options {
2023-05-17 13:58:26 +02:00
* Optional . An array of options to pass to wp_style_engine_get_stylesheet_from_context () .
* Default empty array .
2022-09-19 22:56:10 +02:00
*
2023-05-17 13:58:26 +02:00
* @ type bool $optimize Whether to optimize the CSS output , e . g . , combine rules .
2023-09-14 06:56:21 +02:00
* Default false .
2023-05-17 13:58:26 +02:00
* @ type bool $prettify Whether to add new lines and indents to output .
* Default to whether the `SCRIPT_DEBUG` constant is defined .
2022-09-19 22:56:10 +02:00
* }
*/
function wp_enqueue_stored_styles ( $options = array () ) {
$is_block_theme = wp_is_block_theme ();
$is_classic_theme = ! $is_block_theme ;
/*
* For block themes , this function prints stored styles in the header .
* For classic themes , in the footer .
*/
if (
( $is_block_theme && doing_action ( 'wp_footer' ) ) ||
( $is_classic_theme && doing_action ( 'wp_enqueue_scripts' ) )
) {
return ;
}
$core_styles_keys = array ( 'block-supports' );
$compiled_core_stylesheet = '' ;
$style_tag_id = 'core' ;
// Adds comment if code is prettified to identify core styles sections in debugging.
2022-09-20 03:42:10 +02:00
$should_prettify = isset ( $options [ 'prettify' ] ) ? true === $options [ 'prettify' ] : defined ( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ;
2022-09-19 22:56:10 +02:00
foreach ( $core_styles_keys as $style_key ) {
if ( $should_prettify ) {
$compiled_core_stylesheet .= " /** \n * Core styles: $style_key\n */ \n " ;
}
// Chains core store ids to signify what the styles contain.
$style_tag_id .= '-' . $style_key ;
$compiled_core_stylesheet .= wp_style_engine_get_stylesheet_from_context ( $style_key , $options );
}
// Combines Core styles.
if ( ! empty ( $compiled_core_stylesheet ) ) {
2023-02-23 22:34:19 +01:00
wp_register_style ( $style_tag_id , false );
2022-09-19 22:56:10 +02:00
wp_add_inline_style ( $style_tag_id , $compiled_core_stylesheet );
wp_enqueue_style ( $style_tag_id );
}
// Prints out any other stores registered by themes or otherwise.
$additional_stores = WP_Style_Engine_CSS_Rules_Store :: get_stores ();
foreach ( array_keys ( $additional_stores ) as $store_name ) {
if ( in_array ( $store_name , $core_styles_keys , true ) ) {
continue ;
}
$styles = wp_style_engine_get_stylesheet_from_context ( $store_name , $options );
if ( ! empty ( $styles ) ) {
$key = " wp-style-engine- $store_name " ;
2023-02-23 22:34:19 +01:00
wp_register_style ( $key , false );
2022-09-19 22:56:10 +02:00
wp_add_inline_style ( $key , $styles );
wp_enqueue_style ( $key );
}
}
}
2022-04-20 15:53:16 +02:00
/**
* Enqueues a stylesheet for a specific block .
*
* If the theme has opted - in to separate - styles loading ,
* then the stylesheet will be enqueued on - render ,
* otherwise when the block inits .
*
* @ since 5.9 . 0
*
* @ param string $block_name The block - name , including namespace .
2023-05-30 19:45:21 +02:00
* @ param array $args {
* An array of arguments . See wp_register_style () for full information about each argument .
*
* @ type string $handle The handle for the stylesheet .
* @ type string | false $src The source URL of the stylesheet .
* @ type string [] $deps Array of registered stylesheet handles this stylesheet depends on .
* @ type string | bool | null $ver Stylesheet version number .
* @ type string $media The media for which this stylesheet has been defined .
2023-10-02 20:48:24 +02:00
* @ type string | null $path Absolute path to the stylesheet , so that it can potentially be inlined .
2023-05-30 19:45:21 +02:00
* }
2022-04-20 15:53:16 +02:00
*/
function wp_enqueue_block_style ( $block_name , $args ) {
$args = wp_parse_args (
$args ,
array (
'handle' => '' ,
'src' => '' ,
'deps' => array (),
'ver' => false ,
'media' => 'all' ,
)
);
/**
* Callback function to register and enqueue styles .
*
* @ param string $content When the callback is used for the render_block filter ,
* the content needs to be returned so the function parameter
* is to ensure the content exists .
* @ return string Block content .
*/
2023-09-12 17:23:18 +02:00
$callback = static function ( $content ) use ( $args ) {
2022-04-20 15:53:16 +02:00
// Register the stylesheet.
if ( ! empty ( $args [ 'src' ] ) ) {
wp_register_style ( $args [ 'handle' ], $args [ 'src' ], $args [ 'deps' ], $args [ 'ver' ], $args [ 'media' ] );
}
// Add `path` data if provided.
if ( isset ( $args [ 'path' ] ) ) {
wp_style_add_data ( $args [ 'handle' ], 'path' , $args [ 'path' ] );
// Get the RTL file path.
$rtl_file_path = str_replace ( '.css' , '-rtl.css' , $args [ 'path' ] );
// Add RTL stylesheet.
if ( file_exists ( $rtl_file_path ) ) {
wp_style_add_data ( $args [ 'handle' ], 'rtl' , 'replace' );
if ( is_rtl () ) {
wp_style_add_data ( $args [ 'handle' ], 'path' , $rtl_file_path );
}
}
}
// Enqueue the stylesheet.
wp_enqueue_style ( $args [ 'handle' ] );
return $content ;
};
$hook = did_action ( 'wp_enqueue_scripts' ) ? 'wp_footer' : 'wp_enqueue_scripts' ;
if ( wp_should_load_separate_core_block_assets () ) {
/**
* Callback function to register and enqueue styles .
*
* @ param string $content The block content .
* @ param array $block The full block , including name and attributes .
* @ return string Block content .
*/
2023-09-12 17:23:18 +02:00
$callback_separate = static function ( $content , $block ) use ( $block_name , $callback ) {
2022-04-20 15:53:16 +02:00
if ( ! empty ( $block [ 'blockName' ] ) && $block_name === $block [ 'blockName' ] ) {
return $callback ( $content );
}
return $content ;
};
/*
* The filter ' s callback here is an anonymous function because
* using a named function in this case is not possible .
*
* The function cannot be unhooked , however , users are still able
* to dequeue the stylesheets registered / enqueued by the callback
* which is why in this case , using an anonymous function
* was deemed acceptable .
*/
add_filter ( 'render_block' , $callback_separate , 10 , 2 );
return ;
}
/*
* The filter ' s callback here is an anonymous function because
* using a named function in this case is not possible .
*
* The function cannot be unhooked , however , users are still able
* to dequeue the stylesheets registered / enqueued by the callback
* which is why in this case , using an anonymous function
* was deemed acceptable .
*/
add_filter ( $hook , $callback );
// Enqueue assets in the editor.
add_action ( 'enqueue_block_assets' , $callback );
}
Themes: Add internal-only theme.json's webfonts handler (stopgap).
Adds `_wp_theme_json_webfonts_handler()` for handling `fontFace` declarations in a theme's `theme.json` file to generate the `@font-face` styles for both the editor and front-end.
Design notes:
* It is not a public API, but rather an internal, Core-only handler.
* It is a stopgap implementation that will be replaced when the public Webfonts API is introduced in Core.
* The code design is intentional, albeit funky, with the purpose of avoiding backwards-compatibility issues when the public Webfonts API is introduced in Core.
* It hides the inter-workings.
* Does not exposing API ins and outs for external consumption.
* Only works for `theme.json`.
* Does not provide registration or enqueuing access for plugins.
For more context on the decision to include this stopgap and the Webfonts API, see:
* Core's PR 40493 https://github.com/WordPress/gutenberg/pull/40493
* Gutenberg's tracking issue 40472 https://github.com/WordPress/gutenberg/issues/40472
Props aristath, hellofromTonya, peterwilsoncc, costdev, jffng, zieladam, gziolo, bph, jonoaldersonwp, desrosj.
See #55567, #46370.
Built from https://develop.svn.wordpress.org/trunk@53282
git-svn-id: http://core.svn.wordpress.org/trunk@52871 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:48:09 +02:00
2022-09-29 20:55:10 +02:00
/**
2022-10-25 14:19:18 +02:00
* Loads classic theme styles on classic themes in the frontend .
2022-09-29 20:55:10 +02:00
*
* This is needed for backwards compatibility for button blocks specifically .
2022-09-29 21:15:10 +02:00
*
* @ since 6.1 . 0
2022-09-29 20:55:10 +02:00
*/
function wp_enqueue_classic_theme_styles () {
Themes: Introduce wp_theme_has_theme_json() for public consumption.
Adds `wp_theme_has_theme_json()` for public consumption, to replace the private internal Core-only `WP_Theme_JSON_Resolver::theme_has_support()` method. This new global function checks if a theme or its parent has a `theme.json` file.
For performance, results are cached as an integer `1` or `0` in the `'theme_json'` group with `'wp_theme_has_theme_json'` key. This is a non-persistent cache. Why? To make the derived data from `theme.json` is always fresh from the potential modifications done via hooks that can use dynamic data (modify the stylesheet depending on some option, settings depending on user permissions, etc.).
Also adds a new public function `wp_clean_theme_json_cache()` to clear the cache on `'switch_theme'` and `start_previewing_theme'`.
References:
* [https://github.com/WordPress/gutenberg/pull/45168 Gutenberg PR 45168] Add `wp_theme_has_theme_json` as a public API to know whether a theme has a `theme.json`.
* [https://github.com/WordPress/gutenberg/pull/45380 Gutenberg PR 45380] Deprecate `WP_Theme_JSON_Resolver:theme_has_support()`.
* [https://github.com/WordPress/gutenberg/pull/46150 Gutenberg PR 46150] Make `theme.json` object caches non-persistent.
* [https://github.com/WordPress/gutenberg/pull/45979 Gutenberg PR 45979] Don't check if constants set by `wp_initial_constants()` are defined.
* [https://github.com/WordPress/gutenberg/pull/45950 Gutenberg PR 45950] Cleaner logic in `wp_theme_has_theme_json`.
Follow-up to [54493], [53282], [52744], [52049], [50959].
Props oandregal, afragen, alexstine, aristath, azaozz, costdev, flixos90, hellofromTonya, mamaduka, mcsf, ocean90, spacedmonkey.
Fixes #56975.
Built from https://develop.svn.wordpress.org/trunk@55086
git-svn-id: http://core.svn.wordpress.org/trunk@54619 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-01-18 12:40:10 +01:00
if ( ! wp_theme_has_theme_json () ) {
2022-09-29 20:55:10 +02:00
$suffix = wp_scripts_get_suffix ();
2023-02-23 22:34:19 +01:00
wp_register_style ( 'classic-theme-styles' , '/' . WPINC . " /css/classic-themes $suffix .css " );
2023-06-16 15:28:21 +02:00
wp_style_add_data ( 'classic-theme-styles' , 'path' , ABSPATH . WPINC . " /css/classic-themes $suffix .css " );
2022-09-29 20:55:10 +02:00
wp_enqueue_style ( 'classic-theme-styles' );
}
}
2022-10-25 14:19:18 +02:00
/**
* Loads classic theme styles on classic themes in the editor .
*
* This is needed for backwards compatibility for button blocks specifically .
*
* @ since 6.1 . 0
*
* @ param array $editor_settings The array of editor settings .
* @ return array A filtered array of editor settings .
*/
function wp_add_editor_classic_theme_styles ( $editor_settings ) {
Themes: Introduce wp_theme_has_theme_json() for public consumption.
Adds `wp_theme_has_theme_json()` for public consumption, to replace the private internal Core-only `WP_Theme_JSON_Resolver::theme_has_support()` method. This new global function checks if a theme or its parent has a `theme.json` file.
For performance, results are cached as an integer `1` or `0` in the `'theme_json'` group with `'wp_theme_has_theme_json'` key. This is a non-persistent cache. Why? To make the derived data from `theme.json` is always fresh from the potential modifications done via hooks that can use dynamic data (modify the stylesheet depending on some option, settings depending on user permissions, etc.).
Also adds a new public function `wp_clean_theme_json_cache()` to clear the cache on `'switch_theme'` and `start_previewing_theme'`.
References:
* [https://github.com/WordPress/gutenberg/pull/45168 Gutenberg PR 45168] Add `wp_theme_has_theme_json` as a public API to know whether a theme has a `theme.json`.
* [https://github.com/WordPress/gutenberg/pull/45380 Gutenberg PR 45380] Deprecate `WP_Theme_JSON_Resolver:theme_has_support()`.
* [https://github.com/WordPress/gutenberg/pull/46150 Gutenberg PR 46150] Make `theme.json` object caches non-persistent.
* [https://github.com/WordPress/gutenberg/pull/45979 Gutenberg PR 45979] Don't check if constants set by `wp_initial_constants()` are defined.
* [https://github.com/WordPress/gutenberg/pull/45950 Gutenberg PR 45950] Cleaner logic in `wp_theme_has_theme_json`.
Follow-up to [54493], [53282], [52744], [52049], [50959].
Props oandregal, afragen, alexstine, aristath, azaozz, costdev, flixos90, hellofromTonya, mamaduka, mcsf, ocean90, spacedmonkey.
Fixes #56975.
Built from https://develop.svn.wordpress.org/trunk@55086
git-svn-id: http://core.svn.wordpress.org/trunk@54619 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-01-18 12:40:10 +01:00
if ( wp_theme_has_theme_json () ) {
2022-10-25 14:19:18 +02:00
return $editor_settings ;
}
2022-11-05 23:03:16 +01:00
$suffix = wp_scripts_get_suffix ();
2022-10-25 14:19:18 +02:00
$classic_theme_styles = ABSPATH . WPINC . " /css/classic-themes $suffix .css " ;
Docs: Replace multiple single line comments with multi-line comments.
This changeset updates various comments as per WordPress PHP Inline Documentation Standards.
See https://developer.wordpress.org/coding-standards/inline-documentation-standards/php/#5-inline-comments.
Follow-up to [56174], [56175], [56176], [56177], [56178], [56179], [56180], [56191], [56192], [56193].
Props costdev, audrasjb.
See #58459.
Built from https://develop.svn.wordpress.org/trunk@56194
git-svn-id: http://core.svn.wordpress.org/trunk@55706 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-11 01:11:22 +02:00
/*
* This follows the pattern of get_block_editor_theme_styles ,
* but we can ' t use get_block_editor_theme_styles directly as it
* only handles external files or theme files .
*/
2022-10-25 14:19:18 +02:00
$classic_theme_styles_settings = array (
'css' => file_get_contents ( $classic_theme_styles ),
'__unstableType' => 'core' ,
'isGlobalStyles' => false ,
);
// Add these settings to the start of the array so that themes can override them.
array_unshift ( $editor_settings [ 'styles' ], $classic_theme_styles_settings );
return $editor_settings ;
}
2023-09-29 21:47:21 +02:00
/**
* Removes leading and trailing _empty_ script tags .
*
* This is a helper meant to be used for literal script tag construction
* within `wp_get_inline_script_tag()` or `wp_print_inline_script_tag()` .
* It removes the literal values of " <script> " and " </script> " from
2024-02-21 19:39:09 +01:00
* around an inline script after trimming whitespace . Typically this
2023-09-29 21:47:21 +02:00
* is used in conjunction with output buffering , where `ob_get_clean()`
* is passed as the `$contents` argument .
*
* Example :
*
* // Strips exact literal empty SCRIPT tags.
* $js = ' < script > sayHello (); </ script > ;
* 'sayHello();' === wp_remove_surrounding_empty_script_tags ( $js );
*
* // Otherwise if anything is different it warns in the JS console.
* $js = '<script type="text/javascript">console.log( "hi" );</script>' ;
* 'console.error( ... )' === wp_remove_surrounding_empty_script_tags ( $js );
*
* @ since 6.4 . 0
2023-11-06 10:27:23 +01:00
* @ access private
2023-09-29 21:47:21 +02:00
*
* @ see wp_print_inline_script_tag ()
* @ see wp_get_inline_script_tag ()
*
* @ param string $contents Script body with manually created SCRIPT tag literals .
* @ return string Script body without surrounding script tag literals , or
* original contents if both exact literals aren ' t present .
*/
function wp_remove_surrounding_empty_script_tags ( $contents ) {
$contents = trim ( $contents );
$opener = '<SCRIPT>' ;
$closer = '</SCRIPT>' ;
if (
strlen ( $contents ) > strlen ( $opener ) + strlen ( $closer ) &&
strtoupper ( substr ( $contents , 0 , strlen ( $opener ) ) ) === $opener &&
strtoupper ( substr ( $contents , - strlen ( $closer ) ) ) === $closer
) {
return substr ( $contents , strlen ( $opener ), - strlen ( $closer ) );
} else {
$error_message = __ ( 'Expected string to start with script tag (without attributes) and end with script tag, with optional whitespace.' );
_doing_it_wrong ( __FUNCTION__ , $error_message , '6.4' );
2024-02-23 06:45:12 +01:00
return sprintf (
'console.error(%s)' ,
wp_json_encode (
sprintf (
/* translators: %s: wp_remove_surrounding_empty_script_tags() */
__ ( 'Function %s used incorrectly in PHP.' ),
'wp_remove_surrounding_empty_script_tags()'
) . ' ' . $error_message
)
);
2023-09-29 21:47:21 +02:00
}
}