PluginProbe
Gutenberg / 23.6.2
Gutenberg v23.6.2
23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 7.4.0 All 402 releases
gutenberg / lib / compat / wordpress-7.1 / admin-bar.php

admin-bar.php in Gutenberg 23.6.2, at lib/compat/wordpress-7.1/admin-bar.php

92 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Admin bar compatibility.
4 *
5 * @package gutenberg
6 */
7
8 /**
9 * Replaces the home/odometer dashicon on the site-name node with the actual
10 * site icon, when one is set.
11 *
12 * Ported from https://github.com/WordPress/wordpress-develop/pull/11781.
13 *
14 * @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance.
15 */
16 function gutenberg_admin_bar_site_icon( WP_Admin_Bar $wp_admin_bar ): void {
17 if ( is_network_admin() || is_user_admin() ) {
18 return;
19 }
20
21 $node = $wp_admin_bar->get_node( 'site-name' );
22 if ( ! $node ) {
23 return;
24 }
25
26 if ( isset( $node->meta['class'] ) && false !== strpos( $node->meta['class'], 'has-site-icon' ) ) {
27 return;
28 }
29
30 /** This filter is documented in wp-includes/admin-bar.php */
31 $show_site_icons = apply_filters( 'wp_admin_bar_show_site_icons', true );
32 if ( true !== $show_site_icons || ! has_site_icon() ) {
33 return;
34 }
35
36 $site_icon_url = get_site_icon_url( 32 );
37 $site_icon_url_2x = get_site_icon_url( 64 );
38 $srcset = ( $site_icon_url_2x && $site_icon_url !== $site_icon_url_2x ) ? sprintf( ' srcset="%s 2x"', esc_url( $site_icon_url_2x ) ) : '';
39 $site_icon = sprintf(
40 '<img class="site-icon" src="%s"%s alt="" width="20" height="20" />',
41 esc_url( $site_icon_url ),
42 $srcset
43 );
44
45 $wp_admin_bar->add_node(
46 array(
47 'id' => 'site-name',
48 'title' => $site_icon . $node->title,
49 'meta' => array( 'class' => 'has-site-icon' ),
50 )
51 );
52 }
53 add_action( 'admin_bar_menu', 'gutenberg_admin_bar_site_icon', 31 );
54
55 /**
56 * Enqueues the styles for the admin bar site icon.
57 */
58 function gutenberg_admin_bar_site_icon_styles(): void {
59 $css = <<<CSS
60 #wpadminbar .quicklinks li img.blavatar {
61 border-radius: 2px;
62 }
63 #wpadminbar #wp-admin-bar-site-name.has-site-icon > .ab-item {
64 display: flex;
65 align-items: center;
66 gap: 6px;
67 }
68 #wpadminbar #wp-admin-bar-site-name.has-site-icon > .ab-item:before {
69 content: none;
70 }
71 #wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon {
72 width: 20px;
73 height: 20px;
74 background: #f0f0f1;
75 border-radius: 2px;
76 }
77 @media screen and (max-width: 782px) {
78 #wpadminbar #wp-admin-bar-site-name > .ab-item .site-icon {
79 position: absolute;
80 top: 9px;
81 left: 12px;
82 width: 28px;
83 height: 28px;
84 margin: 0;
85 border-radius: 4px;
86 }
87 }
88 CSS;
89 wp_add_inline_style( 'admin-bar', $css );
90 }
91 add_action( 'admin_bar_init', 'gutenberg_admin_bar_site_icon_styles' );
92