record = $record; } /** * Registers hooks. * * @return void */ public function register(): void { add_action( 'admin_bar_menu', array( $this, 'add_node' ), 100 ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_styles' ) ); } /** * Sizes and aligns the glyph in the bar. * * @return void */ public function enqueue_styles(): void { if ( ! is_admin_bar_showing() || ! current_user_can( self::CAPABILITY ) ) { return; } $css = '#wpadminbar #wp-admin-bar-' . self::ID . ' > .ab-item{display:flex;align-items:center;}' . '#wpadminbar #wp-admin-bar-' . self::ID . ' .aiblackout-ab-icon{display:block;width:18px;height:18px;margin-right:6px;flex:0 0 auto;color:inherit;}' . '#wpadminbar #wp-admin-bar-' . self::ID . ' .aiblackout-ab-icon svg{display:block;width:100%;height:100%;}'; wp_add_inline_style( 'admin-bar', $css ); } /** * Adds the node. * * @param \WP_Admin_Bar $wp_admin_bar Core admin bar instance. * @return void */ public function add_node( \WP_Admin_Bar $wp_admin_bar ): void { if ( ! is_admin_bar_showing() || ! current_user_can( self::CAPABILITY ) ) { return; } $label = Result::label_for( $this->record->get_live_status() ); $title = '' . MainScreen::icon_svg() . '' . '' . esc_html( sprintf( /* translators: %s: Status label, e.g. "Blocking". */ __( 'AI Blackout: %s', 'ai-blackout' ), $label ) ) . ''; $wp_admin_bar->add_node( array( 'id' => self::ID, 'title' => $title, 'href' => admin_url( 'admin.php?page=' . MainScreen::SLUG ), ) ); } }