oont-contents/plugins/jetpack-boost/app/lib/critical-css/class-admin-bar-compatibility.php
2025-04-06 08:34:48 +02:00

54 lines
1.4 KiB
PHP

<?php
namespace Automattic\Jetpack_Boost\Lib\Critical_CSS;
class Admin_Bar_Compatibility {
/**
* Enforces the admin bar stylesheet to load late and synchronously
* when the admin bar is present on the page.
*/
public static function init() {
// Force the Admin Bar to render in the footer.
remove_action( 'wp_body_open', 'wp_admin_bar_render', '0' );
add_filter( 'jetpack_boost_async_style', array( __CLASS__, 'enable_asynchronous_admin_bar' ), 10, 2 );
add_action( 'wp_before_admin_bar_render', array( __CLASS__, 'force_admin_bar_stylesheet' ) );
add_action( 'wp_head', array( __CLASS__, 'dequeue_admin_bar' ), 0 );
}
/**
* Load the admin bar CSS synchronously.
*
* @param bool $is_async Whether admin bar is async.
* @param string $handle Asset handle.
*
* @return bool
*/
public static function enable_asynchronous_admin_bar( $is_async, $handle ) {
if ( 'admin-bar' === $handle ) {
$is_async = false;
}
return $is_async;
}
/**
* Dequeue the admin bar stylesheet, so that it's not printed early.
*
* @see wp_head
*/
public static function dequeue_admin_bar() {
wp_dequeue_style( 'admin-bar' );
}
/**
* Force the admin bar stylesheet to print right before the admin bar markup.
*
* @see wp_before_admin_bar_render
*/
public static function force_admin_bar_stylesheet() {
wp_print_styles( 'admin-bar' );
}
}