elementor / elementor

The most advanced frontend drag & drop page builder. Create high-end, pixel perfect websites at record speeds. Any theme, any page, any design.
https://elementor.com/
GNU General Public License v3.0
6.42k stars 1.39k forks source link

Loop Grid widget causes mixed content warning due to insecure url for widget-loop-builder.min.css file. #25855

Open jasonkilp opened 1 week ago

jasonkilp commented 1 week ago

Prerequisites

Description

After upgrading to the latest version of Elementor (3.21.3) and Elementor Pro (3.21.1), any page or template we have that uses the Loop Grid widget shows a Mixed Content console error.

Here is the error in Chrome (my actual domain has been replaced with "mydomain":

Mixed Content: The page at 'https://www.mydomain.com/' was loaded over HTTPS, but requested an insecure stylesheet 'http://www.mydomain.com/wp-content/plugins/elementor-pro/assets/css/widget-loop-builder.min.css'. This request has been blocked; the content must be served over HTTPS.

This doesn't seem to cause any errors other than the error loading in console, however, if the Loop Grid widget has pagination enabled, and specifically the "Load More" button, then a gigantic spinner icon shows up on the page. The only way to remove it is to remove pagination.

elementor-load-more

Steps to reproduce

  1. Upgrade Elementor to version 3.21.3
  2. Upgrade Elementor Pro to version 3.21.1
  3. Add Loop Grid widget to a page and publish.
  4. Check console log for Mixed Content Warning Error
  5. Enable pagination with Loop Grid Widget.
  6. Set pagination type to "Load on Click"
  7. Publish Page
  8. See large, unstyled "e-load-more-spinner" svg file.

Expected behavior

  1. Upgrade Elementor to version 3.21.3
  2. Upgrade Elementor Pro to version 3.21.1
  3. Add Loop Grid widget to a page and publish.
  4. widget-loop-builder-min.css file is loaded from HTTPS instead of HTTP

Isolating the problem

Elementor System Info

== Server Environment ==
    Operating System: Linux
    Software: Apache/2.4.59 (Debian)
    MySQL version: Debian 12 v10.11.6-MariaDB-0+deb12u1
    PHP Version: 8.2.18
    PHP Memory Limit: 256M
    PHP Max Input Vars: 1000
    PHP Max Post Size: 32M
    GD Installed: Yes
    ZIP Installed: Yes
    Write Permissions: All right
    Elementor Library: Connected

== WordPress Environment ==
    Version: 6.5.2
    Site URL: [redacted]
    Home URL: [redacted]
    WP Multisite: No
    Max Upload Size: 12 MB
    Memory limit: 40M
    Max Memory limit: 256M
    Permalink Structure: /%category%/%postname%/
    Language: en_US
    Timezone: America/New_York
    Admin Email: [redacted]
    Debug Mode: Inactive

== Theme ==
    Name: Hello Elementor
    Version: 3.0.1
    Author: Elementor Team
    Child Theme: No

== User ==
    Role: administrator
    WP Profile lang: en-US
    User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36

== Active Plugins ==
    Advanced Custom Fields
        Version: 6.2.9
        Author: WP Engine

    All in One SEO
        Version: 4.6.1.1
        Author: All in One SEO Team

    Code Snippets
        Version: 3.6.4
        Author: Code Snippets Pro

    Copy & Delete Posts
        Version: 1.4.6
        Author: Inisev

    Elementor
        Version: 3.21.3
        Author: Elementor.com

    Elementor Pro
        Version: 3.21.1
        Author: Elementor.com

    Enable Media Replace
        Version: 4.1.5
        Author: ShortPixel

    HubSpot All-In-One Marketing - Forms, Popups, Live Chat
        Version: 11.1.6
        Author: HubSpot

    MalCare WordPress Security Plugin - Malware Scanner, Cleaner, Security Firewall
        Version: 5.55
        Author: MalCare Security

    Site Kit by Google
        Version: 1.125.0
        Author: Google

    WP Mail SMTP
        Version: 4.0.1
        Author: WP Mail SMTP

    WP Super Cache
        Version: 1.12.0
        Author: Automattic

== Elements Usage ==

    header : 3
        button : 2
        container : 21
        heading : 1
        icon-box : 3
        icon-list : 6
        loop-grid : 2
        mega-menu : 1
        nav-menu : 1
        rating : 1
        theme-site-logo : 2
    container : 1
        container : 3
        heading : 2
        icon-list : 2
    popup : 6
        button : 1
        container : 2
        text-editor : 1
    widget : 0
        hubspot-form : 1
        loop-grid : 5
    wp-post : 47
        button : 2
        container : 867
        counter : 3
        heading : 438
        hubspot-form : 1
        icon : 3
        icon-list : 2
        image : 221
        loop-grid : 35
        text-editor : 260
    wp-page : 17
        button : 7
        container : 176
        counter : 7
        divider : 4
        heading : 87
        html : 1
        hubspot-form : 1
        icon : 3
        icon-box : 5
        icon-list : 6
        image : 49
        loop-carousel : 1
        loop-grid : 10
        media-carousel : 1
        rating : 1
        spacer : 1
        taxonomy-filter : 3
        text-editor : 30
    single-post : 9
        button : 18
        container : 62
        heading : 31
        html : 2
        icon-box : 2
        icon-list : 5
        image : 3
        loop-grid : 4
        menu-anchor : 1
        text-editor : 1
        theme-post-content : 6
    single-page : 6
        container : 21
        heading : 11
        loop-grid : 1
        theme-post-content : 5
    loop-item : 26
        button : 3
        container : 55
        heading : 33
        html : 1
        icon-box : 2
        icon-list : 4
        image : 20
        text-editor : 7
        theme-post-excerpt : 1
        theme-post-title : 1

== Settings ==

    cpt_support: post, page, e-landing-page, customers, events
    disable_color_schemes: yes
    disable_typography_schemes: yes
    allow_tracking: yes
    css_print_method: internal
    editor_break_lines: 1
    unfiltered_files_upload: 1
    font_display: swap
    disabled_elements: wp-widget-calendar, facebook-button, facebook-comments, facebook-embed, facebook-page, theme-post-featured-image, wp-widget-media_gallery, wp-widget-media_image, lottie, wp-widget-meta, post-comments, wp-widget-recent-posts, wp-widget-recent-comments, audio, stripe-button, wp-widget-tag_cloud, wp-widget-text, wp-widget-media_video

== Features ==
    Custom Fonts: 0
    Custom Icons: 1

== Integrations ==

== Elementor Experiments ==
    Improved Asset Loading: Active by default
    Improved CSS Loading: Active
    Inline Font Icons: Active by default
    Additional Custom Breakpoints: Active by default
    admin_menu_rearrangement: Inactive by default
    Flexbox Container: Active by default
    Upgrade Swiper Library: Active by default
    Grid Container: Active
    Nested Elements Performance: Inactive by default
    Optimized Control Loading: Inactive by default
    Default to New Theme Builder: Active
    Hello Theme Header & Footer: Active by default
    Elementor Home Screen: Active by default
    Editor Top Bar: Active
    Build with AI: Active by default
    Landing Pages: Active by default
    Nested Elements: Active
    Lazy Load Background Images: Inactive
    Pages Panel: Inactive by default
    Display Conditions: Active
    Form Submissions: Active by default
    Menu: Active
    Taxonomy Filter: Active

== Log ==

PHP: 2024-04-15 23:04:42 [notice X 298][[redacted]/elementor/includes/base/controls-stack.php::229] hexdec(): Passing null to parameter #1 ($hex_string) of type string is deprecated [array (
  'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]
PHP: 2024-04-16 15:18:41 [notice X 44][[redacted]/elementor-pro/modules/screenshots/module.php::33] Function utf8_decode() is deprecated [array (
  'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]
PHP: 2024-04-23 13:34:59 [warning X 1][[redacted]/elementor-pro/modules/posts/skins/skin-content-base.php::271] Attempt to read property "ID" on null [array (
  'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]
PHP: 2024-04-23 13:36:21 [warning X 209][[redacted]/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php::150] Undefined array key "condition_type" [array (
  'trace' => '
#0: [redacted]/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php(150): Elementor\Core\Logger\Manager -> rest_error_handler()
#1: ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints\Templates -> normalize_template_json_item()
#2: [redacted]/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php(120): class type array_map()
#3: [redacted]/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php(59): ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints\Templates -> normalize_templates_json()
#4: [redacted]/elementor/data/base/endpoint.php(158): ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints\Templates -> get_items()
',
)]
PHP: 2024-04-24 13:13:41 [warning X 4329][[redacted]/elementor/includes/widgets/icon-box.php::695] Undefined array key "icon" [array (
  'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]

PHP: 2024-04-24 21:43:46 [warning X 4][[redacted]/elementor-pro/modules/loop-filter/query/taxonomy-manager.php::150] Undefined array key "logicalJoin" [array (
  'trace' => '
#0: [redacted]/elementor-pro/modules/loop-filter/query/taxonomy-manager.php(150): Elementor\Core\Logger\Manager -> rest_error_handler()
#1: [redacted]/elementor-pro/modules/loop-filter/query/taxonomy-query-builder.php(33): ElementorPro\Modules\LoopFilter\Query\Taxonomy_Manager -> get_hierarchy_of_selected_terms()
#2: [redacted]/elementor-pro/modules/loop-filter/module.php(128): ElementorPro\Modules\LoopFilter\Query\Taxonomy_Query_Builder -> get_merged_queries()
#3: [redacted]/wp-includes/class-wp-hook.php(324): ElementorPro\Modules\LoopFilter\Module -> filter_loop_query()
#4: [redacted]/wp-includes/plugin.php(205): WP_Hook -> apply_filters()
',
)]

JS: showing 8 of 8JS: 2024-04-16 02:37:39 [error X 4][[redacted]/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=3.21.0:2:12628] Failed to execute 'observe' on 'IntersectionObserver': parameter 1 is not of type 'Element'. 
JS: 2024-04-16 19:34:36 [error X 16][[redacted]/wp-admin/load-scripts.php?c=0&loadchunk_0=jquery-core,jquery-migrate,utils,wp-polyfill-inert,regenerator-runtime,wp-polyfill,wp-hooks&ver=6.5.2:2:28760] Cannot read properties of undefined (reading 'value') 
JS: 2024-04-16 20:47:05 [error X 1][[redacted]/wp-content/plugins/elementor/assets/js/editor.min.js?ver=3.21.0:3:326165] Cannot read properties of undefined (reading 'id') 
JS: 2024-04-16 20:48:22 [error X 5][[redacted]/wp-content/plugins/elementor/assets/js/editor.min.js?ver=3.21.0:3:821516] Cannot read properties of undefined (reading 'localized') 
JS: 2024-04-18 03:11:12 [error X 2][[redacted]/wp-content/plugins/elementor/assets/lib/backbone/backbone.marionette.min.js?ver=2.4.5.e1:24:19952] View (cid: "view82") has already been destroyed and cannot be used. 
JS: 2024-04-18 03:23:58 [error X 1][[redacted]/wp-content/plugins/elementor/assets/js/0e842fae60df2bcb2a30.bundle.min.js:2:7743] Cannot read properties of null (reading 'id') 
JS: 2024-04-22 18:03:20 [error X 5][[redacted]/wp-content/plugins/elementor/assets/js/editor.min.js?ver=3.21.1:3:654174] Cannot read properties of undefined (reading 'isDesignable') 
JS: 2024-04-23 16:10:46 [error X 1][[redacted]/wp-content/plugins/elementor-pro/assets/js/editor.min.js?ver=3.21.0:2:65789] Cannot convert undefined or null to object 

Log: showing 20 of 202024-04-18 07:36:49 [info] Elementor data updater process has been queued. [array (
  'plugin' => 'Elementor',
  'from' => '3.21.0',
  'to' => '3.21.1',
)]
2024-04-18 07:38:09 [info] elementor::elementor_updater Started 
2024-04-18 07:38:09 [info] Elementor/Upgrades - _on_each_version Start  
2024-04-18 07:38:10 [info] Elementor/Upgrades - _on_each_version Finished 
2024-04-18 07:38:10 [info] Elementor data updater process has been completed. [array (
  'plugin' => 'Elementor',
  'from' => '3.21.0',
  'to' => '3.21.1',
)]
2024-04-24 13:13:39 [info] Elementor data updater process has been queued. [array (
  'plugin' => 'Elementor',
  'from' => '3.21.1',
  'to' => '3.21.2',
)]
2024-04-24 13:14:00 [info] elementor::elementor_updater Started 
2024-04-24 13:14:00 [info] Elementor/Upgrades - _on_each_version Start  
2024-04-24 13:14:01 [info] Elementor/Upgrades - _on_each_version Finished 
2024-04-24 13:14:01 [info] Elementor data updater process has been completed. [array (
  'plugin' => 'Elementor',
  'from' => '3.21.1',
  'to' => '3.21.2',
)]
2024-04-24 14:11:23 [info] Elementor data updater process has been queued. [array (
  'plugin' => 'Elementor Pro',
  'from' => '3.21.0',
  'to' => '3.21.1',
)]
2024-04-24 14:11:56 [info] elementor-pro::elementor_pro_updater Started 
2024-04-24 14:11:56 [info] Elementor Pro/Upgrades - _on_each_version Start  
2024-04-24 14:11:56 [info] Elementor Pro/Upgrades - _on_each_version Finished 
2024-04-24 14:11:56 [info] Elementor data updater process has been completed. [array (
  'plugin' => 'Elementor Pro',
  'from' => '3.21.0',
  'to' => '3.21.1',
)]
2024-04-25 10:33:55 [info] Elementor data updater process has been queued. [array (
  'plugin' => 'Elementor',
  'from' => '3.21.2',
  'to' => '3.21.3',
)]
2024-04-25 10:33:57 [info] elementor::elementor_updater Started 
2024-04-25 10:33:57 [info] Elementor/Upgrades - _on_each_version Start  
2024-04-25 10:33:58 [info] Elementor/Upgrades - _on_each_version Finished 
2024-04-25 10:33:58 [info] Elementor data updater process has been completed. [array (
  'plugin' => 'Elementor',
  'from' => '3.21.2',
  'to' => '3.21.3',
)]

== Elementor - Compatibility Tag ==

    Elementor Pro: Compatible

== Elementor Pro - Compatibility Tag ==

Agreement

Daveden2 commented 1 week ago

I feel you may need to use something like Better Search Replace plugin or Elementor's url replace tool to replace all occurrences of http://your-domain with https://your-domain

jasonkilp commented 1 week ago

@Daveden2 is that something that would work even with a URL that is out of our control? What I've found is that when you add a loop grid onto the page, Elementor will then inject a link to a CSS file into the DOM, and it appears that this CSS link is where the issue is happening.

Daveden2 commented 1 week ago

Yeah, it should work.

I believe Elementor is using the URL that was stored in the database when you first installed WordPress.

You may have installed WordPress before installing your ssl certificate.