wp_register_page_routes( array $page_routes, string $register_function_name )

In this article

Generic helper function to register routes for a page.

Parameters

$page_routesarrayrequired
Array of route data for the page.
$register_function_namestringrequired
Name of the function to call for registering each route.

Source

function wp_register_page_routes( $page_routes, $register_function_name ) {
	// Load build constants
	$build_constants = require __DIR__ . '/constants.php';

	foreach ( $page_routes as $route ) {
		$content_handle = null;
		$route_handle = null;

		// Register content module if exists
		if ( $route['has_content'] ) {
			$content_asset_path = __DIR__ . "/routes/{$route['name']}/content.min.asset.php";
			if ( file_exists( $content_asset_path ) ) {
				$content_asset = require $content_asset_path;
				$content_handle = 'wp/routes/' . $route['name'] . '/content';
				$extension = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '.js' : '.min.js';
				// Deregister first to override any previously registered version
				// (e.g., Core's default modules when running as a plugin).
				wp_deregister_script_module( $content_handle );
				wp_register_script_module(
					$content_handle,
					$build_constants['build_url'] . 'routes/' . $route['name'] . '/content' . $extension,
					$content_asset['module_dependencies'] ?? array(),
					$content_asset['version'] ?? false
				);
			}
		}

		// Register route module if exists
		if ( $route['has_route'] ) {
			$route_asset_path = __DIR__ . "/routes/{$route['name']}/route.min.asset.php";
			if ( file_exists( $route_asset_path ) ) {
				$route_asset = require $route_asset_path;
				$route_handle = 'wp/routes/' . $route['name'] . '/route';
				$extension = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '.js' : '.min.js';
				// Deregister first to override any previously registered version
				// (e.g., Core's default modules when running as a plugin).
				wp_deregister_script_module( $route_handle );
				wp_register_script_module(
					$route_handle,
					$build_constants['build_url'] . 'routes/' . $route['name'] . '/route' . $extension,
					$route_asset['module_dependencies'] ?? array(),
					$route_asset['version'] ?? false
				);
			}
		}

		// Register route with page
		if ( function_exists( $register_function_name ) ) {
			call_user_func( $register_function_name, $route['path'], $content_handle, $route_handle );
		}
	}
}

User Contributed Notes

You must log in before being able to contribute a note or feedback.