2021-05-25 10:20:57 -04:00
|
|
|
<?php
|
|
|
|
|
2021-11-08 18:10:59 -05:00
|
|
|
/**
|
|
|
|
* Sets a custom slug when creating auto-draft template parts.
|
|
|
|
*
|
|
|
|
* This is only needed for auto-drafts created by the regular WP editor.
|
2021-12-01 19:01:00 -05:00
|
|
|
* If this page is to be removed, this will not be necessary.
|
2021-11-08 18:10:59 -05:00
|
|
|
*
|
|
|
|
* @since 5.9.0
|
|
|
|
*
|
2021-12-01 19:01:00 -05:00
|
|
|
* @param int $post_id Post ID.
|
2021-11-08 18:10:59 -05:00
|
|
|
*/
|
|
|
|
function wp_set_unique_slug_on_create_template_part( $post_id ) {
|
|
|
|
$post = get_post( $post_id );
|
|
|
|
if ( 'auto-draft' !== $post->post_status ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ! $post->post_name ) {
|
|
|
|
wp_update_post(
|
|
|
|
array(
|
|
|
|
'ID' => $post_id,
|
|
|
|
'post_name' => 'custom_slug_' . uniqid(),
|
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
$terms = get_the_terms( $post_id, 'wp_theme' );
|
|
|
|
if ( ! is_array( $terms ) || ! count( $terms ) ) {
|
2022-11-11 11:26:12 -05:00
|
|
|
wp_set_post_terms( $post_id, get_stylesheet(), 'wp_theme' );
|
2021-11-08 18:10:59 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-05-25 10:20:57 -04:00
|
|
|
/**
|
|
|
|
* Generates a unique slug for templates.
|
|
|
|
*
|
|
|
|
* @access private
|
|
|
|
* @since 5.8.0
|
|
|
|
*
|
|
|
|
* @param string $override_slug The filtered value of the slug (starts as `null` from apply_filter).
|
|
|
|
* @param string $slug The original/un-filtered slug (post_name).
|
Coding Standards: Rename `$post_ID` variable to `$post_id` in various files.
The `$post_ID` variable is [https://github.com/WordPress/WordPress-Coding-Standards/blob/546f59c67854589bb8f6b49a30e642e75ff419ad/WordPress/Sniffs/NamingConventions/ValidVariableNameSniff.php#L54 technically allowed in WPCS], as there is a global of the same name that needs to remain for backward compatibility. However, this name is mostly a remnant of legacy code, and switching to `$post_id` where appropriate brings more consistency with the rest of core.
Additionally, this commit resolves a few WPCS warnings in core:
{{{
Variable "$post_IDs" is not in valid snake_case format
}}}
This affects:
* Function parameters in:
* `add_meta()`
* `post_preview()`
* `WP_Embed::delete_oembed_caches()`
* `WP_Embed::cache_oembed()`
* `wp_get_post_cats()`
* `wp_set_post_cats()`
* `wp_unique_post_slug()`
* `wp_set_post_categories()`
* `wp_check_post_hierarchy_for_loops()`
* `wp_add_trashed_suffix_to_post_name_for_trashed_posts()`
* `wp_filter_wp_template_unique_post_slug()`
* `wp_xmlrpc_server::add_enclosure_if_new()`
* `wp_xmlrpc_server::attach_uploads()`
* `wp_xmlrpc_server::mt_getTrackbackPings()`
* Internal variables in:
* `wp_ajax_inline_save()`
* `wp_ajax_set_post_thumbnail()`
* `wp_ajax_get_post_thumbnail_html()`
* `edit_post()`
* `bulk_edit_posts()`
* `wp_write_post()`
* `WP_Embed::shortcode()`
* `wp_insert_post()`
* `wp_xmlrpc_server::_insert_post()`
* `wp_xmlrpc_server::blogger_getPost()`
* `wp_xmlrpc_server::blogger_newPost()`
* `wp_xmlrpc_server::blogger_editPost()`
* `wp_xmlrpc_server::blogger_deletePost()`
* `wp_xmlrpc_server::mw_getPost()`
* `wp_xmlrpc_server::mw_newPost()`
* `wp_xmlrpc_server::mw_editPost()`
* `wp_xmlrpc_server::mt_getPostCategories()`
* `wp_xmlrpc_server::mt_setPostCategories()`
* `wp_xmlrpc_server::mt_publishPost()`
* `wp_xmlrpc_server::pingback_ping()`
* Hook parameters in:
* `oembed_ttl`
* `embed_oembed_html`
* `wp_insert_post_parent`
* `add_trashed_suffix_to_trashed_posts`
* `pre_post_update`
* `edit_attachment`
* `attachment_updated`
* `add_attachment`
* `edit_post_{$post->post_type}`
* `edit_post`
* `post_updated`
* `save_post_{$post->post_type}`
* `save_post`
* `wp_insert_post`
* `pre_wp_unique_post_slug`
* `wp_unique_post_slug`
* `xmlrpc_call_success_blogger_newPost`
* `xmlrpc_call_success_blogger_editPost`
* `xmlrpc_call_success_blogger_deletePost`
* `xmlrpc_call_success_mw_newPost`
* `xmlrpc_call_success_mw_editPost`
Note: The name change only affects variable names and DocBlocks.
The change does not affect the `$post_ID` global still used in a few places.
Follow-up to [51399], [52958], [53723], [53729], [55190], [55308], [55334].
Props mahekkalola, tanjimtc71, SergeyBiryukov.
Fixes #57692.
Built from https://develop.svn.wordpress.org/trunk@55365
git-svn-id: http://core.svn.wordpress.org/trunk@54898 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-19 10:05:22 -05:00
|
|
|
* @param int $post_id Post ID.
|
2021-05-25 10:20:57 -04:00
|
|
|
* @param string $post_status No uniqueness checks are made if the post is still draft or pending.
|
|
|
|
* @param string $post_type Post type.
|
|
|
|
* @return string The original, desired slug.
|
|
|
|
*/
|
Coding Standards: Rename `$post_ID` variable to `$post_id` in various files.
The `$post_ID` variable is [https://github.com/WordPress/WordPress-Coding-Standards/blob/546f59c67854589bb8f6b49a30e642e75ff419ad/WordPress/Sniffs/NamingConventions/ValidVariableNameSniff.php#L54 technically allowed in WPCS], as there is a global of the same name that needs to remain for backward compatibility. However, this name is mostly a remnant of legacy code, and switching to `$post_id` where appropriate brings more consistency with the rest of core.
Additionally, this commit resolves a few WPCS warnings in core:
{{{
Variable "$post_IDs" is not in valid snake_case format
}}}
This affects:
* Function parameters in:
* `add_meta()`
* `post_preview()`
* `WP_Embed::delete_oembed_caches()`
* `WP_Embed::cache_oembed()`
* `wp_get_post_cats()`
* `wp_set_post_cats()`
* `wp_unique_post_slug()`
* `wp_set_post_categories()`
* `wp_check_post_hierarchy_for_loops()`
* `wp_add_trashed_suffix_to_post_name_for_trashed_posts()`
* `wp_filter_wp_template_unique_post_slug()`
* `wp_xmlrpc_server::add_enclosure_if_new()`
* `wp_xmlrpc_server::attach_uploads()`
* `wp_xmlrpc_server::mt_getTrackbackPings()`
* Internal variables in:
* `wp_ajax_inline_save()`
* `wp_ajax_set_post_thumbnail()`
* `wp_ajax_get_post_thumbnail_html()`
* `edit_post()`
* `bulk_edit_posts()`
* `wp_write_post()`
* `WP_Embed::shortcode()`
* `wp_insert_post()`
* `wp_xmlrpc_server::_insert_post()`
* `wp_xmlrpc_server::blogger_getPost()`
* `wp_xmlrpc_server::blogger_newPost()`
* `wp_xmlrpc_server::blogger_editPost()`
* `wp_xmlrpc_server::blogger_deletePost()`
* `wp_xmlrpc_server::mw_getPost()`
* `wp_xmlrpc_server::mw_newPost()`
* `wp_xmlrpc_server::mw_editPost()`
* `wp_xmlrpc_server::mt_getPostCategories()`
* `wp_xmlrpc_server::mt_setPostCategories()`
* `wp_xmlrpc_server::mt_publishPost()`
* `wp_xmlrpc_server::pingback_ping()`
* Hook parameters in:
* `oembed_ttl`
* `embed_oembed_html`
* `wp_insert_post_parent`
* `add_trashed_suffix_to_trashed_posts`
* `pre_post_update`
* `edit_attachment`
* `attachment_updated`
* `add_attachment`
* `edit_post_{$post->post_type}`
* `edit_post`
* `post_updated`
* `save_post_{$post->post_type}`
* `save_post`
* `wp_insert_post`
* `pre_wp_unique_post_slug`
* `wp_unique_post_slug`
* `xmlrpc_call_success_blogger_newPost`
* `xmlrpc_call_success_blogger_editPost`
* `xmlrpc_call_success_blogger_deletePost`
* `xmlrpc_call_success_mw_newPost`
* `xmlrpc_call_success_mw_editPost`
Note: The name change only affects variable names and DocBlocks.
The change does not affect the `$post_ID` global still used in a few places.
Follow-up to [51399], [52958], [53723], [53729], [55190], [55308], [55334].
Props mahekkalola, tanjimtc71, SergeyBiryukov.
Fixes #57692.
Built from https://develop.svn.wordpress.org/trunk@55365
git-svn-id: http://core.svn.wordpress.org/trunk@54898 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-19 10:05:22 -05:00
|
|
|
function wp_filter_wp_template_unique_post_slug( $override_slug, $slug, $post_id, $post_status, $post_type ) {
|
2021-11-08 18:10:59 -05:00
|
|
|
if ( 'wp_template' !== $post_type && 'wp_template_part' !== $post_type ) {
|
2021-05-25 10:20:57 -04:00
|
|
|
return $override_slug;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ! $override_slug ) {
|
|
|
|
$override_slug = $slug;
|
|
|
|
}
|
|
|
|
|
2021-06-16 05:42:56 -04:00
|
|
|
/*
|
|
|
|
* Template slugs must be unique within the same theme.
|
|
|
|
* TODO - Figure out how to update this to work for a multi-theme environment.
|
|
|
|
* Unfortunately using `get_the_terms()` for the 'wp-theme' term does not work
|
|
|
|
* in the case of new entities since is too early in the process to have been saved
|
|
|
|
* to the entity. So for now we use the currently activated theme for creation.
|
|
|
|
*/
|
2022-11-11 11:26:12 -05:00
|
|
|
$theme = get_stylesheet();
|
Coding Standards: Rename `$post_ID` variable to `$post_id` in various files.
The `$post_ID` variable is [https://github.com/WordPress/WordPress-Coding-Standards/blob/546f59c67854589bb8f6b49a30e642e75ff419ad/WordPress/Sniffs/NamingConventions/ValidVariableNameSniff.php#L54 technically allowed in WPCS], as there is a global of the same name that needs to remain for backward compatibility. However, this name is mostly a remnant of legacy code, and switching to `$post_id` where appropriate brings more consistency with the rest of core.
Additionally, this commit resolves a few WPCS warnings in core:
{{{
Variable "$post_IDs" is not in valid snake_case format
}}}
This affects:
* Function parameters in:
* `add_meta()`
* `post_preview()`
* `WP_Embed::delete_oembed_caches()`
* `WP_Embed::cache_oembed()`
* `wp_get_post_cats()`
* `wp_set_post_cats()`
* `wp_unique_post_slug()`
* `wp_set_post_categories()`
* `wp_check_post_hierarchy_for_loops()`
* `wp_add_trashed_suffix_to_post_name_for_trashed_posts()`
* `wp_filter_wp_template_unique_post_slug()`
* `wp_xmlrpc_server::add_enclosure_if_new()`
* `wp_xmlrpc_server::attach_uploads()`
* `wp_xmlrpc_server::mt_getTrackbackPings()`
* Internal variables in:
* `wp_ajax_inline_save()`
* `wp_ajax_set_post_thumbnail()`
* `wp_ajax_get_post_thumbnail_html()`
* `edit_post()`
* `bulk_edit_posts()`
* `wp_write_post()`
* `WP_Embed::shortcode()`
* `wp_insert_post()`
* `wp_xmlrpc_server::_insert_post()`
* `wp_xmlrpc_server::blogger_getPost()`
* `wp_xmlrpc_server::blogger_newPost()`
* `wp_xmlrpc_server::blogger_editPost()`
* `wp_xmlrpc_server::blogger_deletePost()`
* `wp_xmlrpc_server::mw_getPost()`
* `wp_xmlrpc_server::mw_newPost()`
* `wp_xmlrpc_server::mw_editPost()`
* `wp_xmlrpc_server::mt_getPostCategories()`
* `wp_xmlrpc_server::mt_setPostCategories()`
* `wp_xmlrpc_server::mt_publishPost()`
* `wp_xmlrpc_server::pingback_ping()`
* Hook parameters in:
* `oembed_ttl`
* `embed_oembed_html`
* `wp_insert_post_parent`
* `add_trashed_suffix_to_trashed_posts`
* `pre_post_update`
* `edit_attachment`
* `attachment_updated`
* `add_attachment`
* `edit_post_{$post->post_type}`
* `edit_post`
* `post_updated`
* `save_post_{$post->post_type}`
* `save_post`
* `wp_insert_post`
* `pre_wp_unique_post_slug`
* `wp_unique_post_slug`
* `xmlrpc_call_success_blogger_newPost`
* `xmlrpc_call_success_blogger_editPost`
* `xmlrpc_call_success_blogger_deletePost`
* `xmlrpc_call_success_mw_newPost`
* `xmlrpc_call_success_mw_editPost`
Note: The name change only affects variable names and DocBlocks.
The change does not affect the `$post_ID` global still used in a few places.
Follow-up to [51399], [52958], [53723], [53729], [55190], [55308], [55334].
Props mahekkalola, tanjimtc71, SergeyBiryukov.
Fixes #57692.
Built from https://develop.svn.wordpress.org/trunk@55365
git-svn-id: http://core.svn.wordpress.org/trunk@54898 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-19 10:05:22 -05:00
|
|
|
$terms = get_the_terms( $post_id, 'wp_theme' );
|
2021-05-25 10:20:57 -04:00
|
|
|
if ( $terms && ! is_wp_error( $terms ) ) {
|
|
|
|
$theme = $terms[0]->name;
|
|
|
|
}
|
|
|
|
|
|
|
|
$check_query_args = array(
|
|
|
|
'post_name__in' => array( $override_slug ),
|
|
|
|
'post_type' => $post_type,
|
|
|
|
'posts_per_page' => 1,
|
|
|
|
'no_found_rows' => true,
|
Coding Standards: Rename `$post_ID` variable to `$post_id` in various files.
The `$post_ID` variable is [https://github.com/WordPress/WordPress-Coding-Standards/blob/546f59c67854589bb8f6b49a30e642e75ff419ad/WordPress/Sniffs/NamingConventions/ValidVariableNameSniff.php#L54 technically allowed in WPCS], as there is a global of the same name that needs to remain for backward compatibility. However, this name is mostly a remnant of legacy code, and switching to `$post_id` where appropriate brings more consistency with the rest of core.
Additionally, this commit resolves a few WPCS warnings in core:
{{{
Variable "$post_IDs" is not in valid snake_case format
}}}
This affects:
* Function parameters in:
* `add_meta()`
* `post_preview()`
* `WP_Embed::delete_oembed_caches()`
* `WP_Embed::cache_oembed()`
* `wp_get_post_cats()`
* `wp_set_post_cats()`
* `wp_unique_post_slug()`
* `wp_set_post_categories()`
* `wp_check_post_hierarchy_for_loops()`
* `wp_add_trashed_suffix_to_post_name_for_trashed_posts()`
* `wp_filter_wp_template_unique_post_slug()`
* `wp_xmlrpc_server::add_enclosure_if_new()`
* `wp_xmlrpc_server::attach_uploads()`
* `wp_xmlrpc_server::mt_getTrackbackPings()`
* Internal variables in:
* `wp_ajax_inline_save()`
* `wp_ajax_set_post_thumbnail()`
* `wp_ajax_get_post_thumbnail_html()`
* `edit_post()`
* `bulk_edit_posts()`
* `wp_write_post()`
* `WP_Embed::shortcode()`
* `wp_insert_post()`
* `wp_xmlrpc_server::_insert_post()`
* `wp_xmlrpc_server::blogger_getPost()`
* `wp_xmlrpc_server::blogger_newPost()`
* `wp_xmlrpc_server::blogger_editPost()`
* `wp_xmlrpc_server::blogger_deletePost()`
* `wp_xmlrpc_server::mw_getPost()`
* `wp_xmlrpc_server::mw_newPost()`
* `wp_xmlrpc_server::mw_editPost()`
* `wp_xmlrpc_server::mt_getPostCategories()`
* `wp_xmlrpc_server::mt_setPostCategories()`
* `wp_xmlrpc_server::mt_publishPost()`
* `wp_xmlrpc_server::pingback_ping()`
* Hook parameters in:
* `oembed_ttl`
* `embed_oembed_html`
* `wp_insert_post_parent`
* `add_trashed_suffix_to_trashed_posts`
* `pre_post_update`
* `edit_attachment`
* `attachment_updated`
* `add_attachment`
* `edit_post_{$post->post_type}`
* `edit_post`
* `post_updated`
* `save_post_{$post->post_type}`
* `save_post`
* `wp_insert_post`
* `pre_wp_unique_post_slug`
* `wp_unique_post_slug`
* `xmlrpc_call_success_blogger_newPost`
* `xmlrpc_call_success_blogger_editPost`
* `xmlrpc_call_success_blogger_deletePost`
* `xmlrpc_call_success_mw_newPost`
* `xmlrpc_call_success_mw_editPost`
Note: The name change only affects variable names and DocBlocks.
The change does not affect the `$post_ID` global still used in a few places.
Follow-up to [51399], [52958], [53723], [53729], [55190], [55308], [55334].
Props mahekkalola, tanjimtc71, SergeyBiryukov.
Fixes #57692.
Built from https://develop.svn.wordpress.org/trunk@55365
git-svn-id: http://core.svn.wordpress.org/trunk@54898 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-19 10:05:22 -05:00
|
|
|
'post__not_in' => array( $post_id ),
|
2021-05-25 10:20:57 -04:00
|
|
|
'tax_query' => array(
|
|
|
|
array(
|
|
|
|
'taxonomy' => 'wp_theme',
|
|
|
|
'field' => 'name',
|
|
|
|
'terms' => $theme,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
$check_query = new WP_Query( $check_query_args );
|
2021-06-14 16:39:57 -04:00
|
|
|
$posts = $check_query->posts;
|
2021-05-25 10:20:57 -04:00
|
|
|
|
|
|
|
if ( count( $posts ) > 0 ) {
|
|
|
|
$suffix = 2;
|
|
|
|
do {
|
|
|
|
$query_args = $check_query_args;
|
|
|
|
$alt_post_name = _truncate_post_slug( $override_slug, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";
|
|
|
|
$query_args['post_name__in'] = array( $alt_post_name );
|
|
|
|
$query = new WP_Query( $query_args );
|
2023-09-09 05:28:26 -04:00
|
|
|
++$suffix;
|
2021-06-14 16:39:57 -04:00
|
|
|
} while ( count( $query->posts ) > 0 );
|
2021-05-25 10:20:57 -04:00
|
|
|
$override_slug = $alt_post_name;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $override_slug;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2021-12-01 19:01:00 -05:00
|
|
|
* Prints the skip-link script & styles.
|
2021-05-25 10:20:57 -04:00
|
|
|
*
|
|
|
|
* @access private
|
|
|
|
* @since 5.8.0
|
|
|
|
*
|
2021-06-15 06:21:57 -04:00
|
|
|
* @global string $_wp_current_template_content
|
2021-05-25 10:20:57 -04:00
|
|
|
*/
|
|
|
|
function the_block_template_skip_link() {
|
2021-06-15 06:21:57 -04:00
|
|
|
global $_wp_current_template_content;
|
2021-05-25 10:20:57 -04:00
|
|
|
|
2021-06-15 04:52:30 -04:00
|
|
|
// Early exit if not a block theme.
|
2021-05-25 10:20:57 -04:00
|
|
|
if ( ! current_theme_supports( 'block-templates' ) ) {
|
|
|
|
return;
|
|
|
|
}
|
2021-06-15 04:52:30 -04:00
|
|
|
|
|
|
|
// Early exit if not a block template.
|
|
|
|
if ( ! $_wp_current_template_content ) {
|
|
|
|
return;
|
|
|
|
}
|
2021-05-25 10:20:57 -04:00
|
|
|
|
Script Loader: Replace hardcoded output of style tags with calls to `wp_add_inline_style`.
In this commit, enhancements have been made by replacing manually constructed style tags with calls to `wp_add_inline_style`. Previously, numerous style tags were generated and output directly in the header, resulting in redundant code and bypassing the core's style enqueueing system. This approach made it challenging for third-party developers to manage and control the output of these style tags.
To ensure backward compatibility, the following functions have been deprecated and replaced:
- print_embed_styles
- print_emoji_styles
- wp_admin_bar_header
- _admin_bar_bump_cb
Backward compatibility shims have also been added, ensuring that if these functions were previously unhooked from there actions, they will continue to not output a style tag.
However, for the following functions, conversion to use inline styles was not feasible due to the potential disruption it might cause by changing the style tag IDs, potentially breaking JavaScript functionality for a number of plugins in the repository:
- custom-background
- wp-custom
These changes improve code maintainability and enhance the flexibility and control available to developers when managing style outputs within WordPress core.
Props spacedmonkey, hlunter, westonruter, flixos90.
Fixes #58775.
Built from https://develop.svn.wordpress.org/trunk@56682
git-svn-id: http://core.svn.wordpress.org/trunk@56194 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-09-25 13:06:34 -04:00
|
|
|
$skip_link_styles = '
|
2021-05-25 10:20:57 -04:00
|
|
|
.skip-link.screen-reader-text {
|
|
|
|
border: 0;
|
|
|
|
clip: rect(1px,1px,1px,1px);
|
|
|
|
clip-path: inset(50%);
|
|
|
|
height: 1px;
|
|
|
|
margin: -1px;
|
|
|
|
overflow: hidden;
|
|
|
|
padding: 0;
|
|
|
|
position: absolute !important;
|
|
|
|
width: 1px;
|
|
|
|
word-wrap: normal !important;
|
|
|
|
}
|
|
|
|
|
|
|
|
.skip-link.screen-reader-text:focus {
|
|
|
|
background-color: #eee;
|
|
|
|
clip: auto !important;
|
|
|
|
clip-path: none;
|
|
|
|
color: #444;
|
|
|
|
display: block;
|
|
|
|
font-size: 1em;
|
|
|
|
height: auto;
|
|
|
|
left: 5px;
|
|
|
|
line-height: normal;
|
|
|
|
padding: 15px 23px 14px;
|
|
|
|
text-decoration: none;
|
|
|
|
top: 5px;
|
|
|
|
width: auto;
|
|
|
|
z-index: 100000;
|
Script Loader: Replace hardcoded output of style tags with calls to `wp_add_inline_style`.
In this commit, enhancements have been made by replacing manually constructed style tags with calls to `wp_add_inline_style`. Previously, numerous style tags were generated and output directly in the header, resulting in redundant code and bypassing the core's style enqueueing system. This approach made it challenging for third-party developers to manage and control the output of these style tags.
To ensure backward compatibility, the following functions have been deprecated and replaced:
- print_embed_styles
- print_emoji_styles
- wp_admin_bar_header
- _admin_bar_bump_cb
Backward compatibility shims have also been added, ensuring that if these functions were previously unhooked from there actions, they will continue to not output a style tag.
However, for the following functions, conversion to use inline styles was not feasible due to the potential disruption it might cause by changing the style tag IDs, potentially breaking JavaScript functionality for a number of plugins in the repository:
- custom-background
- wp-custom
These changes improve code maintainability and enhance the flexibility and control available to developers when managing style outputs within WordPress core.
Props spacedmonkey, hlunter, westonruter, flixos90.
Fixes #58775.
Built from https://develop.svn.wordpress.org/trunk@56682
git-svn-id: http://core.svn.wordpress.org/trunk@56194 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-09-25 13:06:34 -04:00
|
|
|
}';
|
|
|
|
|
|
|
|
$handle = 'wp-block-template-skip-link';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Print the skip-link styles.
|
|
|
|
*/
|
|
|
|
wp_register_style( $handle, false );
|
|
|
|
wp_add_inline_style( $handle, $skip_link_styles );
|
|
|
|
wp_enqueue_style( $handle );
|
|
|
|
|
2021-05-25 10:20:57 -04: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 17:05:21 -04:00
|
|
|
* Enqueue the skip-link script.
|
2021-05-25 10:20:57 -04: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 17:05:21 -04:00
|
|
|
ob_start();
|
2021-05-25 10:20:57 -04:00
|
|
|
?>
|
|
|
|
<script>
|
|
|
|
( function() {
|
|
|
|
var skipLinkTarget = document.querySelector( 'main' ),
|
2021-11-24 20:07:01 -05:00
|
|
|
sibling,
|
2021-05-25 10:20:57 -04:00
|
|
|
skipLinkTargetID,
|
|
|
|
skipLink;
|
|
|
|
|
|
|
|
// Early exit if a skip-link target can't be located.
|
|
|
|
if ( ! skipLinkTarget ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
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-10 19:11:22 -04:00
|
|
|
/*
|
|
|
|
* Get the site wrapper.
|
|
|
|
* The skip-link will be injected in the beginning of it.
|
|
|
|
*/
|
2021-11-24 20:07:01 -05:00
|
|
|
sibling = document.querySelector( '.wp-site-blocks' );
|
2021-06-15 04:52:30 -04:00
|
|
|
|
|
|
|
// Early exit if the root element was not found.
|
2021-11-24 20:07:01 -05:00
|
|
|
if ( ! sibling ) {
|
2021-06-15 04:52:30 -04:00
|
|
|
return;
|
|
|
|
}
|
2021-05-25 10:20:57 -04:00
|
|
|
|
|
|
|
// Get the skip-link target's ID, and generate one if it doesn't exist.
|
|
|
|
skipLinkTargetID = skipLinkTarget.id;
|
|
|
|
if ( ! skipLinkTargetID ) {
|
|
|
|
skipLinkTargetID = 'wp--skip-link--target';
|
|
|
|
skipLinkTarget.id = skipLinkTargetID;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Create the skip link.
|
|
|
|
skipLink = document.createElement( 'a' );
|
|
|
|
skipLink.classList.add( 'skip-link', 'screen-reader-text' );
|
|
|
|
skipLink.href = '#' + skipLinkTargetID;
|
I18N: Mark screen reader strings as such with translator comments.
This aims to provide better context for translators and make it easier to determine that some strings contain hidden accessibility text and are not displayed in the UI.
Props kebbet, mercime, pavelevap, ocean90, swissspidy, Chouby, jipmoors, afercia, desrosj, costdev, audrasjb, SergeyBiryukov.
Fixes #29748.
Built from https://develop.svn.wordpress.org/trunk@55276
git-svn-id: http://core.svn.wordpress.org/trunk@54809 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-07 12:10:21 -05:00
|
|
|
skipLink.innerHTML = '<?php /* translators: Hidden accessibility text. */ esc_html_e( 'Skip to content' ); ?>';
|
2021-05-25 10:20:57 -04:00
|
|
|
|
|
|
|
// Inject the skip link.
|
2021-11-24 20:07:01 -05:00
|
|
|
sibling.parentElement.insertBefore( skipLink, sibling );
|
2021-05-25 10:20:57 -04:00
|
|
|
}() );
|
|
|
|
</script>
|
|
|
|
<?php
|
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 17:05:21 -04:00
|
|
|
$skip_link_script = str_replace( array( '<script>', '</script>' ), '', ob_get_clean() );
|
|
|
|
$script_handle = 'wp-block-template-skip-link';
|
|
|
|
wp_register_script( $script_handle, false );
|
|
|
|
wp_add_inline_script( $script_handle, $skip_link_script );
|
|
|
|
wp_enqueue_script( $script_handle );
|
2021-05-25 10:20:57 -04:00
|
|
|
}
|
|
|
|
|
2021-06-22 06:00:50 -04:00
|
|
|
/**
|
2021-12-01 19:01:00 -05:00
|
|
|
* Enables the block templates (editor mode) for themes with theme.json by default.
|
2021-06-22 06:00:50 -04:00
|
|
|
*
|
|
|
|
* @access private
|
|
|
|
* @since 5.8.0
|
|
|
|
*/
|
|
|
|
function wp_enable_block_templates() {
|
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 06:40:10 -05:00
|
|
|
if ( wp_is_block_theme() || wp_theme_has_theme_json() ) {
|
2021-06-22 06:00:50 -04:00
|
|
|
add_theme_support( 'block-templates' );
|
|
|
|
}
|
|
|
|
}
|