Neve compatibility with Divi Header/Footer
If you are using the Neve (Pro) theme and want to use the Divi builder for the Header/Footer area, you may face some compatibility issues.
While we are investigating those problems in order to apply a fix directly in Neve's core, as a temporary fix, you can add the following code at the end of the functions.php file of your child theme.
For downloading a read-made child theme for Neve, please check this guide.
/** * Render Neve header when using Divi theme builder. * * @param int $layout_id Layout id. * @param bool $layout_enabled Layout enabled. * @param int $template_id Template id. */ function my_theme_builder_custom_header( $layout_id, $layout_enabled, $template_id ) { // Only add the custom header if there is no Theme Builder header // being rendered and the header layout area is not disabled. if ( 0 === $layout_id && $layout_enabled ) { /** * The template for displaying the header * * Displays all of the head element and everything up until the page header div. * * @package Neve * @since 1.0.0 */ $header_classes = apply_filters( 'nv_header_classes', 'header' ); ?><!DOCTYPE html> <html <?php language_attributes(); ?>> <head> <meta charset="<?php bloginfo( 'charset' ); ?>"> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1"> <link rel="profile" href="http://gmpg.org/xfn/11"> <?php if ( is_singular() && pings_open( get_queried_object() ) ) : ?> <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>"> <?php endif; ?> <?php wp_head(); ?> </head> <body <?php body_class(); ?> <?php neve_body_attrs(); ?> > <?php wp_body_open(); ?> <div class="wrapper"> <header class="<?php echo esc_attr( $header_classes ); ?>" role="banner"> <a class="neve-skip-link show-on-focus" href="#content" tabindex="0"> <?php echo __( 'Skip to content', 'neve' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> </a> <?php neve_before_header_trigger(); if ( apply_filters( 'neve_filter_toggle_content_parts', true, 'header' ) === true ) { do_action( 'neve_do_header' ); } neve_after_header_trigger(); ?> </header> <?php do_action( 'neve_before_primary' ); ?> <main id="content" class="neve-main" role="main"> <?php do_action( 'neve_after_primary_start' ); } } add_action( 'et_theme_builder_template_before_header', 'my_theme_builder_custom_header', 10, 3 ); /** * Render Neve footer when using Divi theme builder. * * @param int $layout_id Layout id. * @param bool $layout_enabled Layout enabled. * @param int $template_id Template id. */ function my_theme_builder_custom_footer( $layout_id, $layout_enabled, $template_id ) { // Only add the custom footer if there is no Theme Builder footer // being rendered and the footer layout area is not disabled. if ( 0 === $layout_id && $layout_enabled ) { // Render our custom footer, for example: /** * The template for displaying the footer * * Contains the closing of the "wrapper" div and all content after. * * @package Neve * @since 1.0.0 */ do_action( 'neve_before_primary_end' ); ?> </main><!--/.neve-main--> <?php do_action( 'neve_after_primary' ); ?> <?php if ( apply_filters( 'neve_filter_toggle_content_parts', true, 'footer' ) === true ) { neve_before_footer_trigger(); do_action( 'neve_do_footer' ); neve_after_footer_trigger(); } ?> </div><!--/.wrapper--> <?php wp_footer(); ?> </body> </html> <?php } } add_action( 'et_theme_builder_template_after_footer', 'my_theme_builder_custom_footer', 10, 3 );