post_content, 'data-elementor-' ) ) { $classes[] = 'elementor-page'; $classes[] = 'elementor-page-' . $post->ID; } } $classes[] = 'ehf-header'; $classes[] = 'ehf-footer'; return array_values( array_unique( $classes ) ); } ); add_action( 'wp', function () { if ( ! is_singular() ) { return; } $post = get_queried_object(); if ( $post instanceof WP_Post && str_contains( $post->post_content, 'data-elementor-' ) ) { // The migrated content is already rendered Elementor HTML. Running // wpautop() over it injects
and

tags into widget markup. remove_filter( 'the_content', 'wpautop' ); } } ); add_action( 'wp_enqueue_scripts', function () { $uploads = wp_upload_dir(); $assets_url = trailingslashit( $uploads['baseurl'] ) . 'hdm-assets/'; wp_dequeue_style( 'elementor-frontend' ); wp_deregister_style( 'elementor-frontend' ); wp_enqueue_style( 'elementor-frontend', $assets_url . 'custom-frontend.min.css', [], '1786740732' ); foreach ( [ 'widget-image', 'widget-heading', 'widget-image-box', 'widget-video' ] as $style ) { wp_dequeue_style( $style ); wp_deregister_style( $style ); } wp_enqueue_style( 'widget-image', $assets_url . 'widget-image.min.css', [ 'elementor-frontend' ], '4.2.2' ); wp_enqueue_style( 'widget-heading', $assets_url . 'widget-heading.min.css', [ 'elementor-frontend' ], '4.2.2' ); wp_enqueue_style( 'widget-image-box', $assets_url . 'custom-widget-image-box.min.css', [ 'elementor-frontend' ], '1786740732' ); wp_enqueue_style( 'widget-video', $assets_url . 'widget-video.min.css', [ 'elementor-frontend' ], '4.2.2' ); wp_enqueue_style( 'hdm-visual-clone', $assets_url . 'hdm-visual.css', [ 'widget-image', 'widget-heading', 'widget-image-box', 'widget-video' ], '2026-09-02' ); wp_enqueue_script( 'hdm-scroll-animations', $assets_url . 'hdm-scroll-animations.js', [], '2026-09-02', true ); }, 100 ); add_action( 'wp_print_styles', function () { wp_dequeue_style( 'elementor-gf-roboto' ); wp_dequeue_style( 'elementor-gf-robotoslab' ); }, 1000 ); add_action( 'elementor/init', function () { $migration_version = '2026-09-02-v2'; if ( get_option( 'hdm_visual_migration_version' ) === $migration_version ) { return; } $system_colors = [ [ '_id' => 'primary', 'title' => 'Primary', 'color' => '#FFFF4B' ], [ '_id' => 'secondary', 'title' => 'Secondary', 'color' => '#0D6DBD' ], [ '_id' => 'text', 'title' => 'Text', 'color' => '#000000' ], [ '_id' => 'accent', 'title' => 'Accent', 'color' => '#FECC3D' ], ]; $custom_colors = [ [ '_id' => '0cbb7ac', 'title' => 'color-1', 'color' => '#8A2841' ], [ '_id' => '6f96257', 'title' => 'color-2', 'color' => '#FFFFC1' ], [ '_id' => '9294ffe', 'title' => 'color-3', 'color' => '#CC9F6D' ], [ '_id' => '176f3dd', 'title' => 'color-4', 'color' => '#FC0E99' ], [ '_id' => 'd6a7dca', 'title' => 'color-5', 'color' => '#C7A19C' ], [ '_id' => '6dd1975', 'title' => 'color-6', 'color' => '#F5A497' ], [ '_id' => '766df99', 'title' => 'color-7', 'color' => '#ED7125' ], [ '_id' => 'f37e0d0', 'title' => 'color-8', 'color' => '#9F6426' ], [ '_id' => '9938036', 'title' => 'color-9', 'color' => '#94C135' ], [ '_id' => 'd3c3697', 'title' => 'color-10', 'color' => '#39AA34' ], [ '_id' => '54a3003', 'title' => 'color-11', 'color' => '#0F6822' ], [ '_id' => '19956d3', 'title' => 'color-12', 'color' => '#6C784A' ], [ '_id' => '8a0f098', 'title' => 'color-13', 'color' => '#1CA3AE' ], [ '_id' => 'c655dea', 'title' => 'color-14', 'color' => '#6B8791' ], [ '_id' => 'e88f354', 'title' => 'color-15', 'color' => '#5BC5F1' ], [ '_id' => '4e5740c', 'title' => 'color-16', 'color' => '#0D6DBD' ], [ '_id' => '35f50b2', 'title' => 'color-17', 'color' => '#7B6DAF' ], [ '_id' => '6624883', 'title' => 'color-18', 'color' => '#C492C3' ], [ '_id' => 'cfa9933', 'title' => 'color-19', 'color' => '#DE7DA9' ], [ '_id' => '5d20c7e', 'title' => 'color-20', 'color' => '#FFFFFF' ], ]; $system_typography = []; foreach ( [ 'primary' => '600', 'secondary' => '400', 'text' => '400', 'accent' => '500' ] as $id => $weight ) { $system_typography[] = [ '_id' => $id, 'title' => ucfirst( $id ), 'typography_typography' => 'custom', 'typography_font_family' => 'HelveticaNeueLTPro-Roman', 'typography_font_weight' => $weight, ]; } $kit = Elementor\Plugin::$instance->kits_manager->get_active_kit(); if ( $kit ) { $administrator_ids = get_users( [ 'role' => 'administrator', 'number' => 1, 'fields' => 'ID', ] ); if ( ! $administrator_ids ) { return; } // Elementor's document API requires an editor context even for this // fixed, parameterless migration. Restore the anonymous visitor before // WordPress continues rendering the request. $visitor_id = get_current_user_id(); wp_set_current_user( (int) $administrator_ids[0] ); try { $kit->update_settings( [ 'system_colors' => $system_colors, 'custom_colors' => $custom_colors, 'system_typography' => $system_typography, 'container_width' => [ 'unit' => 'px', 'size' => 1200, 'sizes' => [] ], 'space_between_widgets' => [ 'unit' => 'px', 'size' => 0, 'row' => '0', 'column' => '0', 'isLinked' => true, ], 'link_normal_color' => '#000000', 'link_hover_color' => '#FFFFFF', ] ); Elementor\Core\Files\CSS\Post::create( $kit->get_main_id() )->update(); } finally { wp_set_current_user( $visitor_id ); } } $posts = get_posts( [ 'post_type' => [ 'page', 'post' ], 'post_status' => 'publish', 'posts_per_page' => -1, 'fields' => 'ids', ] ); foreach ( $posts as $post_id ) { $content = get_post_field( 'post_content', $post_id ); if ( str_contains( $content, 'data-elementor-' ) && 'builder' !== get_post_meta( $post_id, '_elementor_edit_mode', true ) ) { update_post_meta( $post_id, '_elementor_edit_mode', 'builder' ); } } // Restore the source animation marker removed by the first one-off fix. $front_page_id = (int) get_option( 'page_on_front' ); $front_page = get_post( $front_page_id ); if ( $front_page ) { $visible = 'elementor-hidden-tablet elementor-hidden-mobile animated-fast elementor-widget'; $source = 'elementor-hidden-tablet elementor-hidden-mobile animated-fast elementor-invisible elementor-widget'; if ( substr_count( $front_page->post_content, $visible ) === 1 ) { global $wpdb; $content = str_replace( $visible, $source, $front_page->post_content, $replaced ); if ( 1 === $replaced ) { $wpdb->update( $wpdb->posts, [ 'post_content' => $content ], [ 'ID' => $front_page_id ] ); clean_post_cache( $front_page_id ); } } } update_option( 'hdm_visual_migration_version', $migration_version, false ); }, 20 ); add_action( 'wp_body_open', function () { $path = '/var/lib/wordpress/hdm/header-inject.html'; if ( is_readable( $path ) ) { echo file_get_contents( $path ); } } ); add_action( 'wp_footer', function () { $path = '/var/lib/wordpress/hdm/footer-inject.html'; if ( is_readable( $path ) ) { echo file_get_contents( $path ); } }, 5 );