wp_enqueue_block_template_skip_link

The timeline below displays how wordpress function wp_enqueue_block_template_skip_link has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.4

/**
 * Enqueues the skip-link script & styles.
 *
 * @access private
 * @since 6.4.0
 *
 * @global string $_wp_current_template_content
 */
function wp_enqueue_block_template_skip_link()
{
    global $_wp_current_template_content;
    // Back-compat for plugins that disable functionality by unhooking this action.
    if (!has_action('wp_footer', 'the_block_template_skip_link')) {
        return;
    }
    remove_action('wp_footer', 'the_block_template_skip_link');
    // Early exit if not a block theme.
    if (!current_theme_supports('block-templates')) {
        return;
    }
    // Early exit if not a block template.
    if (!$_wp_current_template_content) {
        return;
    }
    $skip_link_styles = '
		.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;
		}';
    $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);
    /**
     * Enqueue the skip-link script.
     */
    ob_start();
    ?>
	<script>
	( function() {
		var skipLinkTarget = document.querySelector( 'main' ),
			sibling,
			skipLinkTargetID,
			skipLink;

		// Early exit if a skip-link target can't be located.
		if ( ! skipLinkTarget ) {
			return;
		}

		/*
		 * Get the site wrapper.
		 * The skip-link will be injected in the beginning of it.
		 */
		sibling = document.querySelector( '.wp-site-blocks' );

		// Early exit if the root element was not found.
		if ( ! sibling ) {
			return;
		}

		// 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;
		skipLink.innerHTML = '<?php 
    /* translators: Hidden accessibility text. */
    esc_html_e('Skip to content');
    ?>';

		// Inject the skip link.
		sibling.parentElement.insertBefore( skipLink, sibling );
	}() );
	</script>
	<?php 
    $skip_link_script = wp_remove_surrounding_empty_script_tags(ob_get_clean());
    $script_handle = 'wp-block-template-skip-link';
    wp_register_script($script_handle, false, array(), false, array('in_footer' => true));
    wp_add_inline_script($script_handle, $skip_link_script);
    wp_enqueue_script($script_handle);
}