Can you try creating a portable shortcode hook for the Search Icon? Example:
function search_shortcode($atts, $content = null) {
ob_start();
do_action('hook_search');
return ob_get_clean();
}
add_shortcode('portable_search', 'search_shortcode');
add_action( 'wp', function() {
if ( 'enable' === generate_get_option( 'nav_search' ) ) {
remove_action( 'generate_menu_bar_items', 'generate_do_navigation_search_button' );
add_action( 'hook_search', 'generate_do_navigation_search_button' );
remove_action( 'generate_inside_navigation', 'generate_navigation_search' );
add_action( 'hook_search', 'generate_navigation_search' );
}
}, 20 );
With this, you can add shortcode portable_search
anywhere.
You can also create a new short code for generate_navigation_search
so it’s in your preferred location.