Title: wp_font_library_wp_admin_enqueue_scripts
Published: May 20, 2026

---

# wp_font_library_wp_admin_enqueue_scripts( string $hook_suffix )

## In this article

 * [Description](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_enqueue_scripts/?output_format=md#description)
 * [Parameters](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_enqueue_scripts/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_enqueue_scripts/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_enqueue_scripts/?output_format=md#related)

[ Back to top](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_enqueue_scripts/?output_format=md#wp--skip-link--target)

Enqueue scripts and styles for the font-library-wp-admin page.

## 󠀁[Description](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_enqueue_scripts/?output_format=md#description)󠁿

Hooked to admin_enqueue_scripts.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_enqueue_scripts/?output_format=md#parameters)󠁿

 `$hook_suffix`stringrequired

The current admin page.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_enqueue_scripts/?output_format=md#source)󠁿

    ```php
    function wp_font_library_wp_admin_enqueue_scripts( $hook_suffix ) {
    	// Check all possible ways this page can be accessed:
    	// 1. Menu page via admin.php?page=font-library-wp-admin (plugin)
    	// 2. Direct file via font-library.php (Core) - screen ID will be 'font-library'
    	$current_screen = get_current_screen();
    	$is_our_page = (
    		( isset( $_GET['page'] ) && 'font-library-wp-admin' === $_GET['page'] ) || // phpcs:ignore WordPress.Security.NonceVerification.Recommended
    		( $current_screen && 'font-library' === $current_screen->id )
    	);

    	if ( ! $is_our_page ) {
    		return;
    	}

    	// Load build constants
    	$build_constants = require __DIR__ . '/../../constants.php';

    	// Fire init action for extensions to register routes and menu items
    	do_action( 'font-library-wp-admin_init' );

    	// Preload REST API data
    	wp_font_library_wp_admin_preload_data();

    	// Get all registered routes
    	$routes = wp_get_font_library_wp_admin_routes();

    	// Get boot module asset file for dependencies
    	$asset_file = ABSPATH . WPINC . '/js/dist/script-modules/boot/index.min.asset.php';
    	if ( file_exists( $asset_file ) ) {
    		$asset = require $asset_file;

    		// This script serves two purposes:
    		// 1. It ensures all the globals that are made available to the modules are loaded.
    		// 2. It initializes the boot module as an inline script.
    		wp_register_script( 'font-library-wp-admin-prerequisites', '', $asset['dependencies'], $asset['version'], true );

    		/*
    		 * Add inline script to initialize the app using initSinglePage (no menuItems).
    		 * The dynamic import is deferred until DOMContentLoaded so that all classic
    		 * script dependencies of @wordpress/boot (wp-private-apis, wp-components,
    		 * wp-theme, etc.) have finished parsing and executing before the boot module
    		 * evaluates. Otherwise, a modulepreloaded @wordpress/boot can win the race
    		 * against the classic-script-printing pass on fast CDN-fronted hosts in
    		 * Chrome, evaluating before wp.theme.privateApis is defined and throwing
    		 * "Cannot unlock an undefined object". See <https://core.trac.wordpress.org/ticket/65103>.
    		 */
    		$init_js_function = <<<'JS'
    		( mountId, routes ) => {
    			const run = async () => {
    				const mod = await import( "@wordpress/boot" );
    				mod.initSinglePage( { mountId, routes } );
    			};
    			if ( document.readyState === "loading" ) {
    				document.addEventListener( "DOMContentLoaded", run );
    			} else {
    				run();
    			}
    		}
    		JS;
    		wp_add_inline_script(
    			'font-library-wp-admin-prerequisites',
    			sprintf(
    				'( %s )( %s, %s );',
    				$init_js_function,
    				wp_json_encode( 'font-library-wp-admin-app', JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ),
    				wp_json_encode( $routes, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES )
    			)
    		);

    		// Register prerequisites style by filtering script dependencies to find registered styles
    		$style_dependencies = array_filter(
    			$asset['dependencies'],
    			function ( $handle ) {
    				return wp_style_is( $handle, 'registered' );
    			}
    		);
    		wp_register_style( 'font-library-wp-admin-prerequisites', false, $style_dependencies, $asset['version'] );

    		// Build dependencies for font-library-wp-admin module
    		$boot_dependencies = array(
    			array(
    				'import' => 'static',
    				'id'     => '@wordpress/boot',
    			),
    		);

    		// Add all registered routes as dependencies
    		foreach ( $routes as $route ) {
    			if ( isset( $route['route_module'] ) ) {
    				$boot_dependencies[] = array(
    					'import' => 'static',
    					'id'     => $route['route_module'],
    				);
    			}
    			if ( isset( $route['content_module'] ) ) {
    				$boot_dependencies[] = array(
    					'import' => 'dynamic',
    					'id'     => $route['content_module'],
    				);
    			}
    		}

    		// Dummy script module to ensure dependencies are loaded
    		wp_register_script_module(
    			'font-library-wp-admin',
    			$build_constants['build_url'] . 'pages/font-library/loader.js',
    			$boot_dependencies
    		);

    		// Enqueue the boot scripts and styles
    		wp_enqueue_script( 'font-library-wp-admin-prerequisites' );
    		wp_enqueue_script_module( 'font-library-wp-admin' );
    		wp_enqueue_style( 'font-library-wp-admin-prerequisites' );
    	}
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/build/pages/font-library/page-wp-admin.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/build/pages/font-library/page-wp-admin.php#L120)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/build/pages/font-library/page-wp-admin.php#L120-L234)

## 󠀁[Related](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_enqueue_scripts/?output_format=md#related)󠁿

| Uses | Description | 
| [wp_font_library_wp_admin_preload_data()](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_preload_data/)`wp-includes/build/pages/font-library/page-wp-admin.php` |

Preload REST API data for the font-library-wp-admin page.

  | 
| [wp_get_font_library_wp_admin_routes()](https://developer.wordpress.org/reference/functions/wp_get_font_library_wp_admin_routes/)`wp-includes/build/pages/font-library/page-wp-admin.php` |

Get all registered routes for the font-library-wp-admin page.

  | 
| [wp_register_script_module()](https://developer.wordpress.org/reference/functions/wp_register_script_module/)`wp-includes/script-modules.php` |

Registers the script module if no script module with that script module identifier has already been registered.

  | 
| [wp_enqueue_script_module()](https://developer.wordpress.org/reference/functions/wp_enqueue_script_module/)`wp-includes/script-modules.php` |

Marks the script module to be enqueued in the page.

  | 
| [wp_add_inline_script()](https://developer.wordpress.org/reference/functions/wp_add_inline_script/)`wp-includes/functions.wp-scripts.php` |

Adds extra code to a registered script.

  | 
| [get_current_screen()](https://developer.wordpress.org/reference/functions/get_current_screen/)`wp-admin/includes/screen.php` |

Get the current screen object

  | 
| [wp_register_script()](https://developer.wordpress.org/reference/functions/wp_register_script/)`wp-includes/functions.wp-scripts.php` |

Registers a new script.

  | 
| [wp_style_is()](https://developer.wordpress.org/reference/functions/wp_style_is/)`wp-includes/functions.wp-styles.php` |

Checks whether a CSS stylesheet has been added to the queue.

  | 
| [wp_register_style()](https://developer.wordpress.org/reference/functions/wp_register_style/)`wp-includes/functions.wp-styles.php` |

Registers a CSS stylesheet.

  | 
| [wp_json_encode()](https://developer.wordpress.org/reference/functions/wp_json_encode/)`wp-includes/functions.php` |

Encodes a variable into JSON, with some confidence checks.

  | 
| [wp_enqueue_script()](https://developer.wordpress.org/reference/functions/wp_enqueue_script/)`wp-includes/functions.wp-scripts.php` |

Enqueues a script.

  | 
| [wp_enqueue_style()](https://developer.wordpress.org/reference/functions/wp_enqueue_style/)`wp-includes/functions.wp-styles.php` |

Enqueues a CSS stylesheet.

  | 
| [do_action()](https://developer.wordpress.org/reference/functions/do_action/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to an action hook.

  |

[Show 8 more](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_enqueue_scripts/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/wp_font_library_wp_admin_enqueue_scripts/?output_format=md#)

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_font_library_wp_admin_enqueue_scripts%2F)
before being able to contribute a note or feedback.