should_display() ) { return; } wp_enqueue_style( 'abhinavdev-env-badge-bar', ABHINAVDEV_ENV_BADGE_URL . 'assets/css/admin-bar.css', array( 'admin-bar' ), ABHINAVDEV_ENV_BADGE_VERSION ); // Dynamic styles based on user color settings. $badge_data = Abhinavdev_Env_Badge_Core::get_badge_data(); $bg_color = sanitize_hex_color( $badge_data['bg_color'] ); $text_color = sanitize_hex_color( $badge_data['text_color'] ); if ( ! $bg_color ) { $bg_color = '#dc2626'; } if ( ! $text_color ) { $text_color = '#ffffff'; } $options = Abhinavdev_Env_Badge_Core::get_options(); $position = ( 'left' === $options['badge_position'] ) ? 'float: left;' : 'float: right;'; $custom_css = sprintf( '#wp-admin-bar-abhinavdev-env-badge > .ab-item .adeb-pill { background-color: %1$s !important; color: %2$s !important; border: 1px solid rgba(255, 255, 255, 0.2); } #wp-admin-bar-abhinavdev-env-badge > .ab-item .adeb-indicator-dot { background-color: %2$s !important; } #wpadminbar #wp-admin-bar-abhinavdev-env-badge { %3$s }', esc_attr( $bg_color ), esc_attr( $text_color ), esc_attr( $position ) ); wp_add_inline_style( 'abhinavdev-env-badge-bar', $custom_css ); } /** * Add environment badge and details submenu to the WordPress Admin Bar. * * @param WP_Admin_Bar $wp_admin_bar Admin bar instance. */ public function add_badge_node( $wp_admin_bar ) { if ( ! $this->should_display() ) { return; } $badge_data = Abhinavdev_Env_Badge_Core::get_badge_data(); $options = Abhinavdev_Env_Badge_Core::get_options(); $settings_url = current_user_can( 'manage_options' ) ? admin_url( 'options-general.php?page=abhinavdev-environment-badge' ) : false; // Build the badge HTML label. $badge_html = sprintf( '%s', esc_html( $badge_data['label'] ) ); // Add Main Parent Node. $wp_admin_bar->add_node( array( 'id' => 'abhinavdev-env-badge', 'title' => $badge_html, 'href' => $settings_url ? esc_url( $settings_url ) : false, 'meta' => array( 'title' => sprintf( /* translators: %s: Environment Name */ esc_attr__( 'Active Environment: %s', 'abhinavdev-environment-badge' ), esc_attr( strtoupper( $badge_data['environment'] ) ) ), 'class' => 'adeb-env-' . esc_attr( $badge_data['environment'] ), ), ) ); // If details dropdown is enabled, add sub-nodes. if ( ! empty( $options['show_details_popup'] ) ) { // Sub-node: Environment Type. $wp_admin_bar->add_node( array( 'parent' => 'abhinavdev-env-badge', 'id' => 'abhinavdev-details-env', 'title' => sprintf( '%s: %s', esc_html__( 'Environment', 'abhinavdev-environment-badge' ), esc_html( ucfirst( $badge_data['environment'] ) ) ), 'href' => false, ) ); // Sub-node: WordPress Version. global $wp_version; $wp_admin_bar->add_node( array( 'parent' => 'abhinavdev-env-badge', 'id' => 'abhinavdev-details-wp', 'title' => sprintf( '%s: %s', esc_html__( 'WordPress', 'abhinavdev-environment-badge' ), esc_html( $wp_version ) ), 'href' => false, ) ); // Sub-node: PHP Version. $wp_admin_bar->add_node( array( 'parent' => 'abhinavdev-env-badge', 'id' => 'abhinavdev-details-php', 'title' => sprintf( '%s: %s', esc_html__( 'PHP', 'abhinavdev-environment-badge' ), esc_html( PHP_VERSION ) ), 'href' => false, ) ); // Sub-node: Host / Server. $host = wp_parse_url( home_url(), PHP_URL_HOST ); if ( $host ) { $wp_admin_bar->add_node( array( 'parent' => 'abhinavdev-env-badge', 'id' => 'abhinavdev-details-host', 'title' => sprintf( '%s: %s', esc_html__( 'Host', 'abhinavdev-environment-badge' ), esc_html( $host ) ), 'href' => false, ) ); } // Sub-node: Link to Settings. if ( $settings_url ) { $wp_admin_bar->add_node( array( 'parent' => 'abhinavdev-env-badge', 'id' => 'abhinavdev-details-settings', 'title' => sprintf( ' %s', esc_html__( 'Badge Settings', 'abhinavdev-environment-badge' ) ), 'href' => esc_url( $settings_url ), ) ); } } } }