Summoning builders…Compiling dreams…Polishing pixels…Aligning the stars to your roadmap…Brewing the backlog…Forging gold from ideas…Charting the constellations…Waking the render spirits…

    Insights/Commerce & CMS/WordPress Custom Font Loading & Fix Page Elementor Builder

    WordPress Custom Font Loading & Fix Page Elementor Builder

    Matthew Cahn
    September 02, 2020
    2.5k views
    Commerce & CMS
    wordpress
    WordPress Custom Font Loading & Fix Page Elementor Builder

    A WordPress page can look correct in Elementor and still display the wrong font, or the wrong layout, when you visit it normally. That mismatch is frustrating, but it usually has a traceable cause: a changed page template, competing typography settings, a font file that is not loading, or stale generated CSS.

    The safest fix is not to rebuild the page. First restore the intended page layout, then establish which system controls typography, and finally verify that the browser receives the correct font files and styles.

    This guide reflects WordPress and Elementor workflows as of 2020; tools, labels, and interfaces may have changed since then.

    Understand What Controls the Page

    WordPress, your theme, and Elementor each handle different parts of the result:

    • WordPress stores the page, its publication status, and its selected template.
    • Your theme supplies the surrounding layout and usually some default typography.
    • Elementor stores the builder layout and produces styles for its widgets.
    • The browser downloads font files and decides which CSS declarations take precedence.

    Changing a page template does not normally erase Elementor content. Likewise, selecting a font name in a typography control does not prove that a custom font file has loaded.

    Treat layout restoration and font loading as related but separate tasks. That makes troubleshooting much faster.

    1. Check the Page Before Changing Anything

    Start with a backup or work on a staging copy, especially if you plan to edit theme files or disable plugins.

    1. Open Pages > All Pages in the WordPress dashboard.
    2. Find the affected page and confirm its title, publication status, and permalink.
    3. Open Edit in a new tab, leaving the public page open separately for comparison.
    4. Note the current template and whether Edit with Elementor is available.
    5. Take a screenshot of the problem before making changes.

    Quick Edit is useful for metadata such as the title, slug, and status. Some installations also expose template selection there, but it is not the place to repair Elementor widget content or configure font loading.

    Avoid opening a builder-created page in another editor and saving replacement content as an experiment. If someone has already overwritten the page, review available WordPress revisions or Elementor revision history before rebuilding it manually.

    2. Restore the Intended Elementor Template

    In the normal WordPress editing screen, locate the page template selector. Depending on your editor and theme, it may appear under Page Attributes or within the document settings sidebar.

    Choose the template that matches the intended design:

    | Template | Typical use | | --- | --- | | Default | A page using the theme’s normal content wrapper, potentially including a sidebar or constrained width | | Elementor Full Width | An Elementor layout that retains the site header and footer while providing a wider content area | | Elementor Canvas | A standalone layout without the theme’s normal header, footer, or sidebar |

    For a standard site page designed in Elementor, Elementor Full Width is often the right starting point. It is not a universal requirement: some pages intentionally use the theme’s default template.

    1. Select the intended template.
    2. Click Update.
    3. Open Edit with Elementor.
    4. Check the page layout setting in Elementor’s page settings, if exposed in your version.
    5. Update the page again and inspect its public URL.

    If the outer page is now correct but individual sections remain narrow, inspect those sections’ content-width and stretch settings. The page template and the internal section width are separate controls.

    A note about featured images

    You can also set a featured image in the WordPress page settings. However, this does not guarantee that social networks will use it when someone shares the URL. Social previews depend on Open Graph metadata, commonly managed by an SEO plugin, and may be cached by the sharing platform.

    3. Decide Which System Owns Typography

    Fonts become difficult to manage when the theme, Elementor defaults, individual widgets, and custom CSS all compete.

    Choose a clear approach:

    • Theme-led typography: Configure site-wide fonts in the theme and let Elementor inherit them where possible.
    • Elementor-led typography: Configure Elementor typography and use deliberate widget-level exceptions.
    • CSS-led typography: Load fonts yourself and apply them through a controlled stylesheet.

    You can combine these approaches, but avoid defining the same property in all three places without a reason.

    Change a single Elementor widget

    Select a heading or text widget, then open Style > Typography. Check the family, weight, size, line height, and letter spacing.

    A widget with an explicitly selected font can override a broader default. If a site-wide font change seems to miss one heading, inspect that heading before adding more CSS.

    Change the theme’s defaults

    Open Appearance > Customize from the WordPress dashboard. Typography controls depend on the theme: they might appear under Typography, Fonts, or another theme-specific section. There is no universal “Appearance Settings” panel that every WordPress site provides.

    In Elementor versions offering Disable Default Fonts, that setting can help theme typography take precedence over Elementor’s defaults. It does not necessarily remove font choices explicitly saved on individual widgets. Test existing pages after changing it.

    4. Load a Custom Font Correctly

    A custom font requires both a font file and a CSS rule that uses it. Before uploading anything, confirm that the font’s license permits web embedding and self-hosting.

    Use webfont files supplied by the foundry or an authorized source. WOFF2 and WOFF provide a practical combination for many 2020 browser requirements. Check your actual audience’s browser needs rather than uploading every available format.

    Option A: Use Elementor Pro’s custom fonts feature

    For installations with Elementor Pro’s custom font support:

    1. Open Elementor > Custom Fonts.
    2. Add a font family using a consistent, recognizable name.
    3. Add a variation for each weight and style you intend to use.
    4. Upload the appropriate files for each variation.
    5. Save or publish the font family.
    6. Select it in an Elementor widget’s typography controls.

    Register regular, bold, and italic files accurately. Assigning the regular file to every weight can produce simulated bold or italic instead of the intended design.

    If the menu is missing, verify that the relevant Pro functionality is installed and active. WordPress does not provide this Elementor feature by default.

    Option B: Self-host fonts in a child theme

    For a code-controlled setup, place the font files and a stylesheet in a child theme:

    child-theme/
    ├── functions.php
    ├── assets/
    │   ├── css/
    │   │   └── fonts.css
    │   └── fonts/
    │       ├── brand-sans-regular.woff2
    │       ├── brand-sans-regular.woff
    │       ├── brand-sans-bold.woff2
    │       └── brand-sans-bold.woff
    

    Add these declarations to assets/css/fonts.css:

    @font-face {
      font-family: "Brand Sans";
      src: url("../fonts/brand-sans-regular.woff2") format("woff2"),
           url("../fonts/brand-sans-regular.woff") format("woff");
      font-weight: 400;
      font-style: normal;
      font-display: swap;
    }
    
    @font-face {
      font-family: "Brand Sans";
      src: url("../fonts/brand-sans-bold.woff2") format("woff2"),
           url("../fonts/brand-sans-bold.woff") format("woff");
      font-weight: 700;
      font-style: normal;
      font-display: swap;
    }
    
    body {
      font-family: "Brand Sans", Arial, sans-serif;
    }
    

    font-display: swap allows fallback text to appear while the custom font loads. The change between fonts can still shift the layout, so choose a reasonably similar fallback.

    Enqueue the stylesheet from the child theme’s functions.php, inside its existing PHP context:

    function kordspace_enqueue_custom_fonts() {
        $relative_path = '/assets/css/fonts.css';
        $file_path = get_stylesheet_directory() . $relative_path;
    
        if ( file_exists( $file_path ) ) {
            wp_enqueue_style(
                'kordspace-custom-fonts',
                get_stylesheet_directory_uri() . $relative_path,
                array(),
                (string) filemtime( $file_path )
            );
        }
    }
    add_action( 'wp_enqueue_scripts', 'kordspace_enqueue_custom_fonts' );
    

    The modification-time version helps browsers request an updated stylesheet when it changes. Do not edit the parent theme for this: a theme update could overwrite your work.

    This method makes the font available through CSS; it does not automatically add the family to Elementor’s font dropdown.

    5. Apply Targeted CSS Overrides

    Appearance > Customize > Additional CSS is useful for small overrides. It does not upload font files, and a font-family declaration alone cannot download a font that has never been registered.

    For a targeted Elementor heading, assign the class brand-heading under the widget’s Advanced > CSS Classes control. Enter the class without a leading dot, then add:

    .elementor .brand-heading .elementor-heading-title {
      font-family: "Brand Sans", Arial, sans-serif;
      font-weight: 700;
    }
    

    Prefer a targeted class over a broad rule affecting every element. A rule such as .elementor * can accidentally replace icon fonts or alter widgets that should keep their own typography.

    Avoid using !important as the first response. Inspect the winning declaration and remove conflicting widget settings where possible. Stronger CSS can hide the underlying problem rather than solve it.

    6. Regenerate Elementor Styles and Clear Caches

    Once the template and typography are correct, refresh the generated assets.

    1. Save the affected page in Elementor.
    2. Open Elementor > Tools.
    3. Use the CSS regeneration tool, commonly labeled Regenerate CSS in versions from this period.
    4. Clear any optimization or page-cache plugin caches.
    5. Purge hosting and CDN caches if applicable.
    6. Hard-refresh the page or test in a private browser window while logged out.

    Regeneration rebuilds generated styles; it does not restore deleted page content or fix a missing font file.

    If Elementor itself will not open, confirm that it is enabled for pages in its settings. Check plugin compatibility and use Elementor’s troubleshooting or Safe Mode features where available. Test plugin deactivation or theme switching on staging rather than disrupting the live site.

    7. Verify the Result in the Browser

    Use browser developer tools rather than relying only on the editor preview.

    Check font requests

    Open the Network panel, filter for fonts, and reload. Look for missing-file errors, HTTP resources blocked on an HTTPS page, or cross-origin errors when fonts come from a different domain. Fix URLs or server configuration at the source.

    Check the rendered text

    Inspect an affected heading or paragraph. Review its computed font-family and font-weight, then check the browser’s rendered-font information where available. A computed family name can be correct even when the browser is actually displaying a fallback.

    Test regular and bold text, mobile layouts, and any accented characters your content requires. Also compare the editor with the logged-out public page: differences often point to caching or frontend-only optimization.

    Takeaway

    Repair Elementor pages in layers: restore the intended template, choose a clear typography owner, load valid font files, and apply narrowly scoped styles. Then regenerate CSS and verify the public page in the browser. This approach fixes the cause without replacing working content or burying the problem under unnecessary overrides.

    Conversation (0)

    No comments yet. Start the conversation.

    Join the conversation

    Create a free member account to comment.