a filled background + its own // colour, which turned the header search icon into an empty dark // circle. Reset them (real .btn buttons keep their styling). '.hoho .icon-btn{background:transparent!important;border:0!important;color:#fff!important;padding:.4rem;}', '.hoho .site-header .icon{color:#fff;}', '.hoho button:not(.btn):not(.burger){background:transparent;border:0;color:inherit;}', // Expanding header search field. '.hoho .header__search{display:flex;align-items:center;gap:.25rem;}', '.hoho .header__search-input{width:0;min-width:0;padding:0;border:0;outline:0;opacity:0;height:var(--control-h);border-radius:var(--r-pill);background:rgba(255,255,255,.15);color:#fff;transition:width .25s var(--ease),opacity .2s var(--ease),padding .25s var(--ease);}', '.hoho .header__search.is-open .header__search-input{width:min(52vw,15rem);padding:0 1rem;opacity:1;}', '.hoho .header__search-input::placeholder{color:rgba(255,255,255,.7);}', ) ) ); }, 20 ); /** * Theme supports + menu locations. */ add_action( 'after_setup_theme', function () { add_theme_support( 'custom-logo', array( 'flex-width' => true, 'flex-height' => true ) ); register_nav_menus( array( 'hoho_primary' => __( 'HoHo — Header Menu', 'hoponhopoff' ), 'hoho_quick' => __( 'HoHo — Footer: Quick Access', 'hoponhopoff' ), 'hoho_tours' => __( 'HoHo — Footer: Tours', 'hoponhopoff' ), 'hoho_account' => __( 'HoHo — Footer: User Account', 'hoponhopoff' ), ) ); } ); /** * Print the SVG icon sprite once, high in the footer, so * resolves everywhere (header, footer, and the plugin's pages). */ add_action( 'wp_footer', function () { // Reuse the plugin's guarded printer when available, so the sprite is never // output twice on plugin pages. if ( function_exists( 'vc_print_icon_sprite' ) ) { vc_print_icon_sprite(); return; } $sprite = get_stylesheet_directory() . '/assets/sprite.svg'; if ( is_readable( $sprite ) ) { echo file_get_contents( $sprite ); // phpcs:ignore } }, 1 ); /** * Swap Astra's header/footer markup for ours. * * Astra prints its header via astra_header_markup() on the `astra_header` * action, and its footer via astra_footer_markup() on `astra_footer`. We remove * those and render our own template parts. Deferred to `wp` so Astra's parent * functions.php (which registers the callbacks) has already loaded. */ add_action( 'wp', function () { if ( function_exists( 'astra_header_markup' ) ) { remove_action( 'astra_header', 'astra_header_markup' ); } add_action( 'astra_header', 'hoho_render_header' ); if ( function_exists( 'astra_footer_markup' ) ) { remove_action( 'astra_footer', 'astra_footer_markup' ); } add_action( 'astra_footer', 'hoho_render_footer' ); } ); function hoho_render_header() { require get_stylesheet_directory() . '/inc/header.php'; } function hoho_render_footer() { require get_stylesheet_directory() . '/inc/footer.php'; } require get_stylesheet_directory() . '/inc/nav-walker.php'; /** * The logo: a linked WordPress Custom Logo if one is set, otherwise the bundled * "Hop On Hop Off" SVG wordmark. */ function hoho_logo() { $home = esc_url( home_url( '/' ) ); if ( has_custom_logo() ) { $id = get_theme_mod( 'custom_logo' ); $img = wp_get_attachment_image( $id, 'full', false, array( 'class' => 'logo' ) ); if ( $img ) { return ''; } } ob_start(); ?> '; }