Viewing 30 results - 61 through 90 (of 16,887 total)
  • Author
    Search Results
  • This reply has been marked as private.

    Hey zdenkab,
    PHP 8.3 is not an issue, you already have the latest theme intsalled, v7.1.3
    Note that Envato only allows 20 +/- API checks per 24 hours.
    If you have multiple sites in your account, you can hit this API check quickly. If you are using the same license multiple times then the same is true.
    Your site says: “unverified Envato token”.
    You write above:

    In the Enfold → Theme Updates section, I receive the following messages:

    * “Your private token is invalid”
    * Purchases, username and email cannot be accessed
    * Enfold cannot check for available updates
    * No update check has been performed in the last month

    So this is a sign that your Token is not correct, please review this documentation and read all of the tabs:
    create a new Token
    We can not login to your Envato account or edit, create tokens, or create a license for you. You can contact Envato for more help.

    Best regards,
    Mike

    zdenkab
    Participant

    Hello Enfold Support Team,

    I am currently using the Enfold theme on a WordPress site hosted at All-Inkl and I am experiencing issues with the Envato token connection and update checks.

    **Current setup:**

    * Enfold version: 7.1.3
    * WordPress: latest version
    * PHP version: 8.3.x (set via All-Inkl hosting)
    * Child theme: active

    **Problem:**
    In the Enfold → Theme Updates section, I receive the following messages:

    * “Your private token is invalid”
    * Purchases, username and email cannot be accessed
    * Enfold cannot check for available updates
    * No update check has been performed in the last month

    I have already:

    * Created a new Envato Personal Token
    * Enabled permissions for username, email and downloading purchased items
    * Removed the old token and added the new one
    * Saved and rechecked multiple times

    Unfortunately, the token is still not recognized.

    **My questions:**

    1. Is PHP 8.3 officially supported and tested with the current Enfold version?
    2. Could PHP 8.3 cause issues with the Envato API connection or update checks?
    3. Do you recommend downgrading to PHP 8.1 or 8.2 for better stability?
    4. Are there any known issues with Envato token validation in the current Enfold release?

    I want to make sure my setup follows your best practices before changing the PHP version or updating the theme manually.

    Thank you very much for your support and guidance.

    Best regards,

    #1494796

    I moved my PHP version down to 7.4 and it downloaded perfectly. Then I changed it back to 8.4 in my Web Control Panel. Let others know.

    #1494718

    so in total : replace the snippet by:
    ( btw. i changed the code on my page too – if you hover the snippet there is on top right of the codeblock a copy button)

    
    /**
     * Enfold Masonry Caption Fix - NUR für Perfect Grid
     * Schiebt die Caption unter das Bild, ohne es zu verdecken.
     */
    
    function enfold_masonry_perfect_grid_caption_fix() {
    ?>
    <style>
        /* ========================================
           PERFECT GRID CSS
           ======================================== */
        
        /* Erlaubt der Caption, über den Container hinauszuragen */
        #top .av-masonry.av-fixed-size.av-masonry-gallery .av-inner-masonry,
        #top .av-masonry-gallery.av-masonry-gallery-fixed figure.av-inner-masonry {
            overflow: visible !important;
        }
        
        /* Positioniert die Caption direkt unter das Bild-Quadrat */
        #top .av-masonry.av-fixed-size.av-masonry-gallery .av-inner-masonry-content,
        #top .av-masonry-gallery.av-masonry-gallery-fixed figcaption.av-inner-masonry-content {
            position: relative !important;
            top: 100%;
            background: #ffffff; /* Hier ggf. deine Wunschfarbe für den Hintergrund */
        }
    
        /* Korrektur für Tablets */
        @media only screen and (min-width: 767px) and (max-width: 989px) {
            .responsive .av-masonry-gallery .av-masonry-entry .av-masonry-entry-title + .av-masonry-entry-content {
                display: block !important;
            }
        }
    </style>
        
    <script>
        (function($) {
            'use strict';
            
            function fixPerfectGrid() {
                // Nur für Masonry Galerien mit festem Raster (Perfect Grid)
                $('.av-masonry-gallery.av-masonry-gallery-fixed, .av-masonry.av-fixed-size.av-masonry-gallery').each(function() {
                    var $gallery = $(this);
                    var columnCount = 1;
                    
                    // Spaltenanzahl ermitteln
                    if ($gallery.hasClass('av-masonry-col-2')) columnCount = 2;
                    else if ($gallery.hasClass('av-masonry-col-3')) columnCount = 3;
                    else if ($gallery.hasClass('av-masonry-col-4')) columnCount = 4;
                    else if ($gallery.hasClass('av-masonry-col-5')) columnCount = 5;
                    else if ($gallery.hasClass('av-masonry-col-6')) columnCount = 6;
                    
                    if ($gallery.hasClass('av-masonry-col-flexible')) {
                        var $items = $gallery.find('.av-masonry-item-with-image:visible');
                        if ($items.length >= 2) {
                            var firstTop = $items.eq(0).offset().top;
                            var itemsInFirstRow = 1;
                            for (var i = 1; i < Math.min($items.length, 10); i++) {
                                if (Math.abs($items.eq(i).offset().top - firstTop) < 10) {
                                    itemsInFirstRow++;
                                } else { break; }
                            }
                            columnCount = itemsInFirstRow;
                        }
                    }
                    
                    // Maximalhöhe der Captions finden, damit die Zeilen gleichmäßig bleiben
                    var maxCaptionHeight = 0;
                    $gallery.find('.av-masonry-item-with-image').each(function() {
                        var $caption = $(this).find('figcaption.av-inner-masonry-content, .av-inner-masonry-content');
                        if ($caption.length && $caption.is(':visible')) {
                            maxCaptionHeight = Math.max(maxCaptionHeight, $caption.outerHeight(true));
                        }
                    });
                    
                    // Abstand unten einfügen, damit das Masonry-Layout Platz für die Caption lässt
                    if (maxCaptionHeight > 0) {
                        $gallery.find('a.av-masonry-entry, .av-masonry-item-with-image').css('margin-bottom', maxCaptionHeight + 'px');
                    }
                });
                
                // Layout neu berechnen
                $('.av-masonry-gallery.av-masonry-gallery-fixed, .av-masonry.av-fixed-size.av-masonry-gallery').isotope('layout');
            }   
    
            // ========================================
            // INITIAL LOAD - Nur auf Bilder warten, nicht auf die ganze Seite
            // ========================================
            (function() {
                var $gallery = $('.av-masonry-gallery');
                
                if ($gallery.length && typeof $.fn.imagesLoaded === 'function') {
                    // Wartet NUR auf die Bilder in der Galerie
                    $gallery.imagesLoaded(function() {
                        setTimeout(fixPerfectGrid, 200);
                    });
                } else {
                    // Fallback für den Notfall
                    setTimeout(fixPerfectGrid, 600);
                }
            })();
    
            
            // Nach Enfold Events
            $(document).on('av-masonry-complete', function() {
                setTimeout(fixPerfectGrid, 250);
            });
            
            // Bei Größenänderung
            $(window).on('debouncedresize', function() {
                // Reset Margin
                $('.av-masonry-gallery.av-masonry-gallery-fixed .av-masonry-item-with-image, .av-masonry.av-fixed-size.av-masonry-gallery .av-masonry-item-with-image').css('margin-bottom', '');
                fixPerfectGrid();
            });
            
        })(jQuery);
    </script>
    <?php
    }
    add_action('wp_footer', 'enfold_masonry_perfect_grid_caption_fix', 999);
    
    

    i also replaced the on load event by:

    // Run initially
    $(window).on('load', function() {
        $('.av-masonry-gallery').imagesLoaded(function() {
            setTimeout(fixAllMasonryModes, 200);
        });
    });

    and implemented the enfold debounceresize function on performance reasons.

    #1494673

    Doesn’t work:

    CSS:

    #top .av-masonry-gallery-container {
        width: 100% !important;
        max-width: 100% !important;
        margin: 0 auto !important;
    }
    #top .container {
        overflow: hidden;
    }
    #top .av-content-slide-container .av-masonry-gallery-container {
        width: 100% !important;
    }
    /* Mobile Fix */
    @media only screen and (max-width: 767px) {
        .responsive #top #wrap_all .container .av-masonry-gallery-container {
            padding-left: 0 !important;
            padding-right: 0 !important;
        }
    }

    JS:

    // Force Masonry Gallery zu container width
    function fix_masonry_gallery_width() { ?>
    <script>
    jQuery(document).ready(function($) {
        $('.av-masonry-gallery-container').css({
            'width': '100%',
            'max-width': '100%',
            'margin': '0 auto'
        });
    });
    </script>
    <?php }
    add_action('wp_footer', 'fix_masonry_gallery_width');
    • This reply was modified 2 months ago by slikslok.
    #1494599

    Hi Mike,

    I’m glad you were able to access the WP dashboard.

    But what do you mean by “Theme Editor and Plugins” are disabled?
    Maybe it’s because the store is under the main Akhurst network (in a multisite environment)?

    About the code …
    I understand what you said about the snippet running before the template theme. Ok.
    But should I change it directly in the theme’s functions.php file or tweak the code itself using the WPCode plugin?
    I did some research and found that you can “hooks”. Does it make sense?

    https://www.google.com/search?q=how+can+I+make+a+php+code+in+wp+code+p%3Bugin+run+before+the+theme%3F&rlz=1C1GCEA_enCA1112CA1112&oq=how+can+I+make+a+php+code+in+wp+code+p%3Bugin+run+before+the+theme%3F&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIHCAEQIRiPAjIHCAIQIRiPAtIBCTI0MzQxajBqN6gCALACAA&sourceid=chrome&ie=UTF-8

    I never place any code without using the WPCode plugin, because I’m always afraid of messing with the theme’s functions.php file.
    Do I just need to paste this “hook” wrapping your code??
    https://snipboard.io/qKb8y6.jpg
    https://snipboard.io/eCM7KQ.jpg

    I did what Ismael asked me to in the beginning, but it’s not working ;(
    Quick CSS + PHP snippet (using the hook with WP Code.
    https://shop-ca.akhurst.com/product/onc60123mc/

    Mike,
    You can totally do whatever you need to do on your end to make this happen.
    I’m not an expert and super scared of doing something wrong that will break the website.

    Thank you so much!
    Leo

    Hey carrclaudia,

    Thank you for the inquiry.

    Please make sure that the template files (header.php, footer.php, etc.) in the child theme are up to date, if any are present and ask your hosting provider to upgrade PHP from version 7.4.33 to a later version such as PHP 8.2 or higher. Let us know if the issue persists.

    Best regards,
    Ismael

    carrclaudia
    Participant

    Hello Kriesi Support Team,


    I’m continuing to experience “THE SAME recurring FATAL E_ERROR” on this live website (https://www.drisabelbalza.com) that triggers WordPress “Your Site is Experiencing a Technical Issue” emails repeatedly.
    I don’t know why this annoying E_ERROR doesn’t go away, even though I tried your previous recommendations without any successful result.
    What can I do next?
 This is from January 24, 2026:

    Environment:

    WordPress version: 6.8.3

    Parent theme: Enfold 7.1.3
    
Active theme: Enfold Child (version 1.0)

    Current plugin: (version )

    PHP version: 7.4.33

    Error Details
    
============
    
An error of type E_ERROR was caused in line 223 of the file /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php. Error message: Uncaught Error: Class ‘avia_font_manager’ not found in /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php:223


    Stack trace:

    #0 /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php(259): avia_social_media_icons->build_icon(Array)

    #1 /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php(288): avia_social_media_icons->html()
    
#2 /home/drisabel/public_html/wp-content/themes/enfold/includes/helper-main-menu.php(22): avia_social_media_icons(Array, false)

    #3 /home/drisabel/public_html/wp-includes/template.php(812): require(‘/home/drisabel/…’)

    #4 /home/drisabel/public_html/wp-includes/template.php(745): load_template(‘/home/drisabel/…’, false, Array)
    
#5 /home/drisabel/public_html/wp-includes/general-template.php(206): locate_template(Array, true, false, Array)

    #6 /home/drisabel/public_html/wp-content/themes/enfold/header.php(275): get_template_part(‘includes/helper’, ‘main-menu’)

    #

    Best regards,
    
Claudia

    #1494474

    Hi,

    Thank you for the update.

    The style tag was incorrectly included in the style.css file, so we removed it. We couldn’t find the page with the Masonry Gallery, so we created a test page. (see the private field)

    We updated the $sold_items array in the functions.php file:

    $sold_items = array(1233,1232,1231);
    

    Best regards,
    Ismael

    #1494451

    Hey nancyT,

    Enfold is compatible with all new PHP versions. If you are having problems, then make sure that you are running the latest version (7.1.3) https://kriesi.at/documentation/enfold/theme-update/.

    Best regards,
    Rikard

    epurchase
    Participant

    Hi,
    After updating theme to latest version facing difficulties like many elements does not open for editing at the back end of the website. (Heading, Separator / Whitespace, Icon List, button).

    It just shows empty white block or sometime it takes lot of time to load the block element for editing.

    Thought some plugins might be causing this conflict and tried to disable all the plugins which was installed already, by doing so I got critical error and fixed it with the help of Host provider.

    Now the website is up, enabled few plugins and content elements showing up sometime and not showing option for editing sometime, but still error pops up on the top of the page if we are in ‘Edit Advance Layout Builder’.

    These were the few error which I copied for your reference.

    Notice: Function WP_Abilities_Registry::get_registered was called incorrectly. Ability “gd-mcp/get-site-info” not found. Please see Debugging in WordPress for more information. (This message was added in version 6.9.0.) in /var/www/wp-includes/functions.php on line 6131

    Notice: Function WP_Abilities_Registry::get_registered was called incorrectly. Ability “gd-mcp/get-post” not found. Please see Debugging in WordPress for more information. (This message was added in version 6.9.0.) in /var/www/wp-includes/functions.php on line 6131

    Warning: Cannot modify header information – headers already sent by (output started at /var/www/wp-includes/functions.php:6131) in /var/www/wp-admin/admin-header.php on line 14

    Warning: Cannot modify header information – headers already sent by (output started at /var/www/wp-includes/functions.php:6131) in /var/www/wp-includes/option.php on line 1740

    Warning: Cannot modify header information – headers already sent by (output started at /var/www/wp-includes/functions.php:6131) in /var/www/wp-includes/option.php on line 1741

    Theme Version: 7.1.3
    Using Enfold Child theme
    PHP Version 7.4

    #1494356

    Hi,

    Thank you for the update.

    Yes, you’re correct. The code from the previous thread should activate the ALB for a specific post type, but you need to import all entries first. After that, add the code to the functions.php file, make sure to replace the post type slug with your own and then refresh the WordPress dashboard or visit the front end. This will execute the hook and create the required post meta info or custom fields for the custom posts. You can remove the code afterward.

    https://kriesi.at/support/topic/importing-lots-of-data-to-scf-custom-posts-all-having-same-template/#post-1473810

    Best regards,
    Ismael

    #1494307
    ben-design
    Participant

    Hello Kriesi,

    we have a problem with your theme. The Frontpage is loaded but the subpages doen`t load. The wordpress debug log showed me the following errors:

    [26-Jan-2026 08:04:53 UTC] PHP Notice: Die Funktion _load_textdomain_just_in_time wurde fehlerhaft aufgerufen. Das Laden der Übersetzung für die Domain avia_framework wurde zu früh ausgelöst. Das ist normalerweise ein Hinweis auf Code im Plugin oder Theme, der zu früh läuft. Übersetzungen sollten mit der Aktion init oder später geladen werden. Weitere Informationen: Debugging in WordPress (engl.). (Diese Meldung wurde in Version 6.7.0 hinzugefügt.) in /kunden/173137_56070/rp-hosting/58/58/wp-includes/functions.php on line 6131
    [26-Jan-2026 08:04:53 UTC] PHP Fatal error: Uncaught Error: Call to undefined function avia_breadcrumbs() in /kunden/173137_56070/rp-hosting/58/58/wp-content/themes/hansenorden/template-builder.php:117
    Stack trace:
    #0 /kunden/173137_56070/rp-hosting/58/58/wp-includes/template-loader.php(125): include()
    #1 /kunden/173137_56070/rp-hosting/58/58/wp-blog-header.php(19): require_once(‘/kunden/173137_…’)
    #2 /kunden/173137_56070/rp-hosting/58/58/index.php(17): require(‘/kunden/173137_…’)
    #3 {main}
    thrown in /kunden/173137_56070/rp-hosting/58/58/wp-content/themes/hansenorden/template-builder.php on line 117

    Hello Yigit:
    I’m continuing to experience “THE SAME recurring FATAL ERROR” on this live website (https://www.drisabelbalza.com) that triggers WordPress “Your Site is Experiencing a Technical Issue” emails repeatedly. I don’t know why this annoying E_ERROR doesn’t go away, even though I tried your previous recommendations. What can I do next?
    This is from yesterday, January 24, 2026:

    Environment:
    WordPress version: 6.8.3
    Parent theme: Enfold 7.1.3
    Active theme: Enfold Child (version 1.0)
    Current plugin: (version )
    PHP version: 7.4.33

    Error Details
    =============
    An error of type E_ERROR was caused in line 223 of the file /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php. Error message: Uncaught Error: Class ‘avia_font_manager’ not found in /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php:223
    Stack trace:
    #0 /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php(259): avia_social_media_icons->build_icon(Array)
    #1 /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php(288): avia_social_media_icons->html()
    #2 /home/drisabel/public_html/wp-content/themes/enfold/includes/helper-main-menu.php(22): avia_social_media_icons(Array, false)
    #3 /home/drisabel/public_html/wp-includes/template.php(812): require(‘/home/drisabel/…’)
    #4 /home/drisabel/public_html/wp-includes/template.php(745): load_template(‘/home/drisabel/…’, false, Array)
    #5 /home/drisabel/public_html/wp-includes/general-template.php(206): locate_template(Array, true, false, Array)
    #6 /home/drisabel/public_html/wp-content/themes/enfold/header.php(275): get_template_part(‘includes/helper’, ‘main-menu’)
    #

    Best regards,
    Claudia

    #1494267

    Hi,
    I believe Ismael’s solution is for the masonry items (posts) were a custom field can be added, but you want to use masonry gallery images where the custom field is not an option.
    Instead try this function in your child theme functions.php:

    /**
     * Add SOLD overlay to specific masonry gallery items based on the data-av-masonry-item attribute
     */
    function add_sold_overlay_to_masonry_gallery() {
        // Define which masonry items should show as SOLD
        $sold_items = array(973, 866, 865);
        
        // Convert to JavaScript array
        $sold_items_js = json_encode($sold_items);
        ?>
        <script>
        jQuery(document).ready(function($) {
            // Items to mark as sold
            var soldItems = <?php echo $sold_items_js; ?>;
            
            // Add sold-item class to each specified masonry item
            soldItems.forEach(function(itemId) {
                $('.av-masonry-gallery .av-masonry-entry[data-av-masonry-item="' + itemId + '"]').addClass('sold-item');
            });
        });
        </script>
        
        <style>
        /* SOLD overlay styles */
        .av-masonry-entry.sold-item {
            position: relative;
        }
    
        .av-masonry-entry.sold-item::before {
            content: "SOLD";
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: rgba(255, 0, 0, 0.85);
            color: white;
            font-size: 24px;
            font-weight: bold;
            padding: 10px 30px;
            z-index: 10;
            letter-spacing: 2px;
            border: 3px solid white;
        }
    
        .av-masonry-entry.sold-item::after {
            content: "";
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0);
            z-index: 9;
        }
        </style>
        <?php
    }
    add_action('wp_footer', 'add_sold_overlay_to_masonry_gallery');

    At the top of the function define which masonry items should show as SOLD in this line:

    $sold_items = array(973, 866, 865);

    these are the media library attachment IDs
    f6RZUyN.png
    this is the result:
    f6RmCAl.png

    Best regards,
    Mike

    #1494128

    Topic: Update

    Blanca
    Guest

    Hello,

    we use Enfold for our website. Now I have updated WordPress to its latest version (6.9) and now I get this error on my website: Notice: Die Funktion _load_textdomain_just_in_time wurde fehlerhaft aufgerufen. Das Laden der Übersetzung für die Domain avia_framework wurde zu früh ausgelöst. Das ist normalerweise ein Hinweis auf Code im Plugin oder Theme, der zu früh läuft. Übersetzungen sollten mit der Aktion init oder später geladen werden. Weitere Informationen: Debugging in WordPress (engl.). (Diese Meldung wurde in Version 6.7.0 hinzugefügt.) in /mnt/web203/d0/72/54211272/htdocs/wp-includes/functions.php on line 6131 Warning: session_start(): Session cannot be started after headers have already been sent in /mnt/web203/d0/72/54211272/htdocs/wp-content/themes/enfold/config-templatebuilder/avia-shortcodes/masonry_entries/masonry_entries.php on line 102 Warning: session_start(): Session cannot be started after headers have already been sent in /mnt/web203/d0/72/54211272/htdocs/wp-content/themes/enfold/config-templatebuilder/avia-shortcodes/portfolio/portfolio.php on line 53

    I can not update Enfold. They say that enfold is on its latest Version (4.9.2.2)
    Can you please help me?

    #1494097
    Jan Thiel
    Participant

    Hey there,

    running Enfold 7.1.3 on WordPress 6.9 with PHP 8.2.
    WordPress Multisite.

    We face an issue where a site hits the OOM with 512M Memory configured when opening any Icon Font Related Avia Builder Element Popup in the wp-admin editor.

    Tracing the issue down we pinpointed the SVG handling to be quite an issue regarding memory usage.

    The site uses 9 Icon Fonts with a total size of ~7M. Only a part of that is actually SVG content. So let’s assume we talk about 1,5MB SVG files.

    $ wp-content/uploads/dynamic_avia/avia_icon_fonts/
    `
    1.3M ./font-awesome-bold-01
    1.4M ./font-awesome-bold-02
    911K ./font-awesome-bold-03
    1.9M ./font-awesome-brands
    454K ./font-awesome-regular
    42K ./k-iconpack01
    283K ./k-iconpack02
    46K ./m-icon-set-01
    24K ./m-signet
    `

    Parsing these files lead to memory allocations of around 700MB.

    Related files are “class-font-manager.php” and “class-svg-images.php” with the functions around set_svg_markup and get_icon_html. As well as followup native PHP functions down the stack trace (simplexml_load_string and substr_replace in particular).
    Besides the OOM the SimpleXML calls consume about 1s alone processing time.

    We identified several issues with the current implementation that could lead to this issue without being able to easily provide a “fix” as everything is quite tightly couples around the in-memory “cache” handling:

    Unlimited cache: The protected $cache stores complete SVG strings without size limits → uncontrolled increase in RAM usage.

    Unvalidated input loading: file_get_contents / curl_exec load entire files/responses without upfront limits → large memory spikes.

    cURL without abort callback: Remote downloads can grow arbitrarily large (no Content-Length or progress checks).

    String operations create copies: substr_replace, preg_match_all, str_replace on large strings increase peak memory consumption.

    DOM parsing with SimpleXML: isColoredSVGWithGradients uses simplexml_load_string → the entire XML tree is loaded into memory, potentially multiplying memory usage and introducing XXE/DoS risks.

    Missing size validation: No limits are enforced before parsing or caching (local or remote).

    Potential format-parsing risks: Regex-based extract_svg_attributes on large inputs can be computationally expensive.

    We use Datadog to create Traces and Profile of our application. We were able to confirm that the SimpleXML related code as well as the regex based ops on the SVG file content trigger the OOM in most cases.
    I can easily share the Flame Graphs of the Memory Allocation and the Processing Times if you like. We find them to be most helpful in understanding what actually happens at the runtime in code :-)

    The issue is reproducible for this single site so the issue will be most certainly based on the actual icon font files although they are valid SVG. So we are happy to give any fix a test before any coming release. As we operate a server cluster, just provide me the diffs / changes and we will apply and test them ourselves.

    Let me know if you need any more information. I shared a link to the icon font files in the private content section.

    Best Regards,
    Jan

    #1494037

    Hey SurigliaStudio,
    When I test your site the “Taglie” button doesn’t create a mobile style flyout menu, I assume that you now have the plugin disabled, but I think that I understand. I have created a custom function that will create a mobile style overlay menu from a sticky button on the right using a image that you can choose:
    fUawEAX.md.png
    fUaOLwF.md.png
    and on mobile the overlay is about 95% of the screen.
    The function uses the Named Menus from your WordPress menus to show:
    fUaQF6B.md.png
    In Configuration there is a line to choose your menu image/icon and the default menu to show on all pages:
    fUcd32j.md.png
    and below you can add as many additional menus with an array of pages that they will show on:
    fUcFI4e.md.png
    The code also has all of the css built-in for styling if you want to adjust.
    Add this code to your child theme functions.php file, if you are not using a child theme you could use the WP Code plugin then add a new snippet, in the top right corner use the PHP snippet as the code type:
    fUcTO4R.jpg
    then add the above code and save.

    /**
     * Add Sticky Button with Fly-out Menu
     * Add this to your Enfold child theme's functions.php
     */
    
    function custom_sticky_menu_button() {
        // Configuration - Change these values as needed
        $button_image = '/wp-content/uploads/2026/01/menu.png'; // Update path to your PNG
        $menu_slug = 'sticky menu'; // Default menu slug - change as needed
        
        // Optional: Set different menu based on page ID
        $current_page_id = get_the_ID();
        // Example: Use different menu for specific pages
         if (in_array($current_page_id, array(1028, 1080, 1031, 1034))) {
            $menu_slug = 'sticky menu two';
         }
    	if (in_array($current_page_id, array(1376, 1331, 1277, 1283))) {
            $menu_slug = 'sticky menu three';
         }
        
        // Get the menu
        $menu_items = wp_get_nav_menu_items($menu_slug);
        
        if (!$menu_items) {
            return; // Exit if menu doesn't exist
        }
        ?>
        
        <!-- Sticky Button -->
        <div id="sticky-menu-btn" class="sticky-menu-button">
            " alt="Menu">
        </div>
        
        <!-- Fly-out Menu Overlay -->
        <div id="flyout-menu-overlay" class="flyout-menu-overlay">
            <div class="flyout-menu-close">×</div>
            <nav class="flyout-menu-content">
                <?php
                wp_nav_menu(array(
                    'menu' => $menu_slug,
                    'container' => false,
                    'menu_class' => 'flyout-nav-menu',
                    'fallback_cb' => false
                ));
                ?>
            </nav>
        </div>
        
        <style>
            /* Sticky Button Styles */
            .sticky-menu-button {
                position: fixed;
                right: 20px;
                top: 50%;
                transform: translateY(-50%);
                width: 50px;
                height: 50px;
                border-radius: 50%;
                cursor: pointer;
                z-index: 9998;
                transition: opacity 0.3s ease;
                box-shadow: 0 2px 10px rgba(0,0,0,0.3);
                overflow: hidden;
            }
            
            .sticky-menu-button img {
                width: 100%;
                height: 100%;
                object-fit: cover;
            }
            
            .sticky-menu-button.hidden {
                opacity: 0;
                pointer-events: none;
            }
            
            /* Fly-out Menu Overlay */
            .flyout-menu-overlay {
                position: fixed;
                top: 0;
                right: -100%;
                width: 25%;
                height: 100vh;
                background: #fff;
                z-index: 9999;
                transition: right 0.4s ease;
                box-shadow: -2px 0 10px rgba(0,0,0,0.2);
                overflow-y: auto;
            }
            
            .flyout-menu-overlay.active {
                right: 0;
            }
            
            /* Close Button */
            .flyout-menu-close {
                position: absolute;
                top: 20px;
                right: 20px;
                font-size: 36px;
                cursor: pointer;
                color: #333;
                width: 40px;
                height: 40px;
                display: flex;
                align-items: center;
                justify-content: center;
                line-height: 1;
                transition: color 0.3s ease;
            }
            
            .flyout-menu-close:hover {
                color: #000;
            }
            
            /* Menu Content */
            .flyout-menu-content {
                padding: 80px 30px 30px;
            }
            
            .flyout-nav-menu {
                list-style: none;
                margin: 0;
                padding: 0;
            }
            
            .flyout-nav-menu li {
                margin: 0 0 15px 0;
            }
            
            .flyout-nav-menu a {
                display: block;
                padding: 12px 0;
                color: #333;
                text-decoration: none;
                font-size: 16px;
                transition: color 0.3s ease;
                border-bottom: 1px solid #eee;
            }
            
            .flyout-nav-menu a:hover {
                color: #000;
            }
            
            /* Sub-menu styles */
            .flyout-nav-menu .sub-menu {
                list-style: none;
                margin: 10px 0 0 20px;
                padding: 0;
            }
            
            .flyout-nav-menu .sub-menu a {
                font-size: 14px;
                padding: 8px 0;
            }
            
            /* Mobile Styles */
            @media (max-width: 768px) {
                .flyout-menu-overlay {
                    width: 95%;
                }
            }
        </style>
        
        <script>
            (function() {
                var btn = document.getElementById('sticky-menu-btn');
                var overlay = document.getElementById('flyout-menu-overlay');
                var closeBtn = document.querySelector('.flyout-menu-close');
                
                // Open menu
                btn.addEventListener('click', function() {
                    overlay.classList.add('active');
                    btn.classList.add('hidden');
                    document.body.style.overflow = 'hidden'; // Prevent body scroll
                });
                
                // Close menu
                closeBtn.addEventListener('click', function() {
                    overlay.classList.remove('active');
                    btn.classList.remove('hidden');
                    document.body.style.overflow = ''; // Restore body scroll
                });
                
                // Close on overlay click outside menu
                overlay.addEventListener('click', function(e) {
                    if (e.target === overlay) {
                        overlay.classList.remove('active');
                        btn.classList.remove('hidden');
                        document.body.style.overflow = '';
                    }
                });
            })();
        </script>
        
        <?php
    }
    add_action('wp_footer', 'custom_sticky_menu_button');
    

    Adjust the image, menus, and page IDs to suit.

    Best regards,
    Mike

    #1494026

    sometimes the way via youtube api v3 does not work – even if you have connected your billing details with that api.

    place a snippet to your child-theme funcions.php:
    – Registering the shortcode for the descriptive text (without api use – and google costs ;)

    
    /**
     * Final Version: Fetches YouTube description and converts links correctly
     * preventing double-tagging or broken HTML.
     */
    function get_yt_description_final($atts) {
        $a = shortcode_atts(array('id' => ''), $atts);
        if (empty($a['id'])) return 'Video ID missing.';
    
        $v_id = esc_attr($a['id']);
        
        // Use a fresh cache key to overwrite the broken HTML in your database
        $transient_key = 'yt_desc_v3_clean_' . $v_id;
        $description = get_transient($transient_key);
    
        if (false === $description) {
            $response = wp_remote_get("https://www.youtube.com/watch?v=" . $v_id, array(
                'user-agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
            ));
    
            if (is_wp_error($response)) return 'YouTube connection error.';
    
            $html = wp_remote_retrieve_body($response);
    
            if (preg_match('/"shortDescription":"(.+?)"/', $html, $matches)) {
                $description = $matches[1];
                
                // Decode unicode characters
                $description = json_decode('"' . $description . '"');
                
                // Clean up backslashes before storing
                $description = stripslashes($description);
                
                set_transient($transient_key, $description, DAY_IN_SECONDS);
            } else {
                return 'Description currently unavailable.';
            }
        }
    
        // 1. First: Escape the raw text to be safe from XSS
        $safe_desc = esc_html($description);
    
        // 2. Second: Convert URLs into clickable links using a more precise regex
        // This regex matches URLs starting with http or https
        $pattern = '~(?<!["\'>])\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))~';
        $clickable_desc = preg_replace($pattern, '<a href="$0" target="_blank" rel="nofollow">$0</a>', $safe_desc);
    
        // 3. Output the result
        return '<div class="yt-desc-box" style="white-space: pre-wrap; word-break: break-word; background:#f9f9f9; padding:20px; border-radius:5px; border:1px solid #ddd; height:350px; overflow-y:auto;">' 
               . $clickable_desc . 
               '</div>';
    }
    add_shortcode('video_description', 'get_yt_description_final');
    

    after that – place a shortcode under your embedded video:
    [video_description id="youtube-ID"]

    see: https://webers-testseite.de/videos/
    ( there you can easily copy&paste the needed code – and see examples )

    because i do not believe that this is GDPR konform – i block it til you accept to see the youtube video.

    poberndoerfer
    Participant

    Hello,
    We have an up-to-date WordPress-Site (PHP 8.5, WordPress 6.9.0).
    Enfold is installed, albeit with an older version 4.7.4.
    Unfortunately the original license got lost, so we purchased a new license key.
    Following this we created an Envato personal token and installed this successfully!
    Nonetheless, the theme update mechanism still claims:
    “Keine Aktualisierung verfügbar. Du verwendest die letzte Version! (4.7.4)”
    (No update available. You are running the most recent version (4.7.4))
    This is obviously not correct.
    Any ideas what we might be doing wrong?
    Or is this expected behaviour?
    Many thanks!
    BR,
    Pascal

    #1493982

    well this wordpress login screen is not influenced by the themes installed !
    This is a pure wordpress setting – so you have to check where it might be set a different Login Page.

    i often make an own settup for it by this snippet for child-theme functions.php:

    function custom_loginlogo_url($url) {
      $url = get_site_url();
      return $url;
    }
    add_filter( 'login_headerurl', 'custom_loginlogo_url' );
    
    function my_login_logo(){ 
    $logo = avia_get_option('logo'); 
    ?>
    <style type="text/css">
        #login h1 a, .login h1 a {
          background-image: url(<?php echo $logo; ?>);
          height: 120px;
          width: 320px;
          background-size: contain !important;
          background-repeat: no-repeat;
          background-position: center top;
          position: relative;
          left: 50%;
          transform: translateX(-50%);
        }
        body.login {
          background-image: -webkit-radial-gradient(circle farthest-corner at center center, #B8E1FC 0%, #231421 100%) !important;
          background-image: radial-gradient(circle farthest-corner at center center, #B8E1FC 0%, #231421 100%) !important;
          background-repeat: repeat;
        }
        body.login form {
          background: rgba(255,255,255,0.2);
          box-shadow: 0 0 15px rgba(0,0,0,0.3);
        }
    </style>
    <?php 
    }
    add_action( 'login_enqueue_scripts', 'my_login_logo' );

    you see in the snippet that the logo you set in the logo input field of enfold will be dynamically inserted there. If you like to have a differente one – then insert an absolute url on that place: background-image: url(<?php echo $logo; ?>);

    this is then the look for it:

    #1493972

    Topic: Even more CSS Problems

    in forum Enfold
    Sonno
    Participant

    Hi Enfold Support Team,

    I’m experiencing persistent CSS issues with the Enfold theme on my WordPress site that are affecting responsiveness and styling, particularly for mobile and desktop layouts. Custom CSS added via Quick CSS or the child theme’s style.css often fails to apply, gets overridden, or doesn’t update despite clearing all caches (browser, plugins, server-side). Changes to theme options like advanced styling, colors, or typography also don’t reflect on the frontend reliably.

    Specific Problems
    Caching/Loading Issues: Styles revert or show defaults even after disabling CSS/JS merging and compression in Enfold > Performance.

    Responsive Design Breaks: Headings get cut off on iPad/smaller screens (e.g., change font-weight to bold, font-size smaller, text-transform uppercase based on viewport).

    Typography Overrides: Headings and text styles (bold, small caps, uppercase/lowercase transforms) fail to adapt responsively across devices, requiring constant !important hacks that still don’t stick.

    Overrides and Conflicts: Theme options ignore inputs; unclosed Quick CSS blocks break everything; plugin conflicts (e.g., forms, checkouts) exacerbate issues.

    Troubleshooting Steps Tried
    Cleared caches everywhere and tested in incognito mode across browsers (Chrome, Safari, Firefox).

    Disabled caching plugins, performance optimizations, and child theme customizations temporarily—no fix.

    Updated WordPress, Enfold, PHP (tested 7.4 vs. 8), and relevant plugins; issue persists across devices including Mac OS.

    A staging site/credentials can be provided for testing. Any guidance on debugging responsive heading styles, CSS caching, or fixes would be greatly appreciated!

    • This topic was modified 2 months, 2 weeks ago by Sonno.
    #1493839

    Hi Ismael,
    thanks for your reply.

    YES enfold updated to 7.1.3
    No modification in the child theme
    Already downgraded to older PHP version… same problem.

    Giacomo

    #1493836

    Hey giacomopol,

    Thank you for the inquiry.

    Is the theme updated to version 7.1.3? If there are template modifications in the child theme, please make sure to update those as well. If the issue persists, try to downgrade to an older PHP version, such as PHP 8.1. Let us know the result.

    Best regards,
    Ismael

    #1493828
    giacomopol
    Participant

    After updating PHP from 7.4 to 8.3 and having latest wordpress version (6.9) enfold version and last Woocommerce version, my website crashes.
    Fatal error: Allowed memory size of 134217728 bytes exhausted

    Deactivating Woocommerce (by changing the plugin folder name) all works well.
    As soon as I switch to a “standard wordpress” template, everything works with woocommerce activated.

    Did ALL the woocommerce maintenance tools, nothing worked.

    No way to make it work again even by going back to previous PHP versions.
    Only way to stay with enfold theme is to switch off woocommerce.
    Thank you for your help.

    Hello Enfold Support Team,
    I am continuing to experience the same recurring FATAL ERROR on this live website (https://www.drisabelbalza.com) that triggers WordPress “Your Site is Experiencing a Technical Issue” emails repeatedly again and again.

    Environment:
    WordPress version: 6.8.3
    Parent theme: Enfold 7.1.3
    Active theme: Enfold Child (version 7.1.3)
    Current plugin: (version )
    PHP version: 7.4.33

    Error Details:
    An error of type E_ERROR was caused in line 223 of the file /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php. Error message: Uncaught Error: Class ‘avia_font_manager’ not found in /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php:223

    Stack trace:
    #0 /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php(259): avia_social_media_icons->build_icon(Array)
    #1 /home/drisabel/public_html/wp-content/themes/enfold/includes/classes/class-social-media-icons.php(288): avia_social_media_icons->html()
    #2 /home/drisabel/public_html/wp-content/themes/enfold/includes/helper-main-menu.php(22): avia_social_media_icons(Array, false)
    #3 /home/drisabel/public_html/wp-includes/template.php(812): require(‘/home/drisabel/…’)
    #4 /home/drisabel/public_html/wp-includes/template.php(745): load_template(‘/home/drisabel/…’, false, Array)
    #5 /home/drisabel/public_html/wp-includes/general-template.php(206): locate_template(Array, true, false, Array)
    #6 /home/drisabel/public_html/wp-content/themes/enfold/header.php(275): get_template_part(‘includes/helper’, ‘main-menu’)

    I have been following your recommendations, but this annoying E_ERROR doesn’t disappear. Could you tell me what I can do next?

    Best regards,
    Claudia

    #1493714
    sqzi
    Participant

    I created a layout in WordPress 6.9 with Enfold 7.1.3 and PHP 8.4.16. At the 41st revision, more than half of my layout suddenly disappeared in the preview.

    I have now recreated the layout from scratch twice. Both times I encountered the same problem. I restored the page from a backup. That worked fine, but when I saved it again and previewed it, most of the layout had disappeared once more.

    I currently have about 30 sites running this WordPress Enfold setup and have never had this problem before.

    Do you have any idea how we can solve this?
    I look forward to hearing from you.

    Kind regards,

    Bert

    Translated with DeepL.com (free version)

    #1493676

    Hi Rikard.

    I have gone through the site in question, step by step, updating things one more.

    For this site we have managed to get it running on PHP8.2. A good result for now.

    The issue in this instance, we have found two plugins that appear not to be distributed via WordPress. We are awaiting updates for these and will install shortly and test. We have these two plugins deactivated for now.

    I went through updating another site using Enfold, completing the same process of ensuring all theme, plugins and wordpress are up to date. Then deactivating all plugins and incrementally changing the PHP version until an error appears. We would then rollback to last working PHP version and by process, going through and turning on the plugins one by one and refreshing caches etc. to test for errors.

    For this particular site we could only go as far as PHP 8.1. Not sure where that leaves us for higher PHP versions but for now at least we are away for version 7.

    I think we can close this for now unless you have something else to add?

    All the best
    John

    #1493597

    this is i think the best option to handle the lang files:
    it is a only manual patch vor those lang files of LayerSlider.
    Or automatic after Plugin Update
    Just uploading the lang-files to /wp-content/plugins/LayerSlider/assets/locales folder

    You will have than a button on the LayerSlider Admin bar:

    
    /* ========================================================================
     * LayerSlider: Patch for Select Option of lang files
     * Auto-copies language files from uploads to plugin directory
     * Auto-removes language files that were deleted from uploads
     * Auto-patches after plugin updates
     ======================================================================== */
    
    // 1. Patch-Function
    function child_theme_patch_layerslider_template() {
    
        if (!defined('LS_ROOT_PATH')) {
            return false;
        }
    
        $template_file = LS_ROOT_PATH . '/templates/tmpl-plugin-settings.php';
        
        // Check both locations
        $plugin_locales_dir = LS_ROOT_PATH . '/locales';
        $upload_dir = wp_upload_dir();
        $custom_locales_dir = $upload_dir['basedir'] . '/layerslider/lang';
        
        if (!file_exists($template_file)) {
            return false;
        }
        
        // Create custom locales directory if it doesn't exist
        if (!is_dir($custom_locales_dir)) {
            wp_mkdir_p($custom_locales_dir);
        }
        
        // SYNC language files (copy new/updated, delete removed)
        child_theme_sync_language_files($custom_locales_dir, $plugin_locales_dir);
        
        // Find available languages (now from plugin directory after sync)
        $available_languages = child_theme_get_available_languages($plugin_locales_dir);
        
        if (empty($available_languages)) {
            return false;
        }
        
        $content = file_get_contents($template_file);
        
        // language names
        $language_names = [
            'de_DE' => 'Deutsch',
            'de_DE_formal' => 'Deutsch (Sie)',
            'de_CH' => 'Deutsch (Schweiz)',
            'de_CH_informal' => 'Deutsch (Schweiz, Du)',
            'de_AT' => 'Deutsch (Österreich)',
            // add lang names needed for your uploaded lang files
        ];
        
        // protected default languages 
        $protected_languages = ['auto', 'en_US', 'fr_FR', 'hu_HU', 'uk'];
        
        $modified = false;
        
        // PART 1: Adding missing languages
        $new_options = '';
        foreach ($available_languages as $locale) {
            if (strpos($content, 'value="' . $locale . '"') !== false) {
                continue;
            }
            
            $language_name = isset($language_names[$locale]) ? $language_names[$locale] : $locale;
            $new_options .= "\n\t\t\t\t\t\t<option value=\"" . $locale . "\" <?php echo ( \$custom_locale === '" . $locale . "' ) ? 'selected' : ''?>>" . $language_name . "</option>";
            $modified = true;
        }
        
        if (!empty($new_options)) {
            $search = '<option value="auto" <?php echo ( $custom_locale === \'auto\' ) ? \'selected\' : \'\'?>><?php _e(\'Site default\', \'LayerSlider\') ?></option>';
            $replace = $search . $new_options;
            $content = str_replace($search, $replace, $content);
        }
        
        // PART 2: Removing languages that no longer exist
        foreach ($language_names as $locale => $name) {
            if (in_array($locale, $protected_languages)) {
                continue;
            }
            
            if (strpos($content, 'value="' . $locale . '"') !== false && !in_array($locale, $available_languages)) {
                $pattern = '/\s*<option value="' . preg_quote($locale, '/') . '"[^>]*>.*?<\/option>/';
                $new_content = preg_replace($pattern, '', $content);
                
                if ($new_content !== $content) {
                    $content = $new_content;
                    $modified = true;
                }
            }
        }
        
        if (!$modified) {
            return true;
        }
        
        // Save
        file_put_contents($template_file, $content);
        
        return true;
    }
    
    // 2. IMPROVED: Sync language files (copy new + delete removed)
    function child_theme_sync_language_files($source_dir, $target_dir) {
        
        if (!is_dir($source_dir) || !is_dir($target_dir)) {
            return false;
        }
        
        $copied = 0;
        $deleted = 0;
        
        // PART 1: Copy new/updated files from source to target
        $source_files = glob($source_dir . '/LayerSlider-*.{mo,po}', GLOB_BRACE);
        
        // Get list of locales in source directory
        $source_locales = [];
        if ($source_files) {
            foreach ($source_files as $source_file) {
                $filename = basename($source_file);
                $target_file = $target_dir . '/' . $filename;
                
                // Extract locale from filename
                preg_match('/LayerSlider-([^\.]+)\./', $filename, $matches);
                if (isset($matches[1])) {
                    $source_locales[] = $matches[1];
                }
                
                // Copy if doesn't exist or is newer
                if (!file_exists($target_file) || filemtime($source_file) > filemtime($target_file)) {
                    if (copy($source_file, $target_file)) {
                        $copied++;
                    }
                }
            }
        }
        
        // Remove duplicates
        $source_locales = array_unique($source_locales);
        
        // PART 2: Delete files from target that don't exist in source
        $target_files = glob($target_dir . '/LayerSlider-*.{mo,po}', GLOB_BRACE);
        
        // Protected locales (never delete these - they're from the plugin itself)
        $protected_locales = ['en_US', 'fr_FR', 'hu_HU', 'uk'];
        
        if ($target_files) {
            foreach ($target_files as $target_file) {
                $filename = basename($target_file);
                
                // Extract locale from filename
                preg_match('/LayerSlider-([^\.]+)\./', $filename, $matches);
                if (!isset($matches[1])) {
                    continue;
                }
                
                $locale = $matches[1];
                
                // Skip protected locales
                if (in_array($locale, $protected_locales)) {
                    continue;
                }
                
                // If this locale is NOT in source directory, delete it from target
                if (!in_array($locale, $source_locales)) {
                    if (unlink($target_file)) {
                        $deleted++;
                    }
                }
            }
        }
        
        return ['copied' => $copied, 'deleted' => $deleted];
    }
    
    // 3. Helper function
    function child_theme_get_available_languages($locales_dir) {
        $languages = [];
        
        if (!is_dir($locales_dir)) {
            return $languages;
        }
        
        $files = glob($locales_dir . '/LayerSlider-*.mo');
        
        if (!$files) {
            return $languages;
        }
        
        foreach ($files as $file) {
            $filename = basename($file, '.mo');
            $locale = str_replace('LayerSlider-', '', $filename);
            if (!empty($locale)) {
                $languages[] = $locale;
            }
        }
        
        return $languages;
    }
    
    // 4. Insert button in dashboard
    function child_theme_layerslider_add_sync_button() {
    	$screen = get_current_screen();
    	if (!$screen || strpos($screen->id, 'layerslider') === false) {
    	    return;
    	}
    	?>
    	<script type="text/javascript">
    	    jQuery(document).ready(function($) {
    	        setTimeout(function() {
    	            if ($('.ls-sync-languages-button').length > 0) {
    	                return;
    	            }
    	            
    	            var $settingsButton = $('.ls-open-plugin-settings-button');
    	            
    	            if ($settingsButton.length === 0) {
    	                return;
    	            }
    	            
    	            var syncUrl = <?php echo wp_json_encode(add_query_arg('ls_sync', '1', admin_url('admin.php?page=layerslider'))); ?>;
    	            
    	            var $syncButton = $('<a>', {
    	                href: syncUrl,
    	                class: 'ls-button ls-sync-languages-button',
    	                html: '<?php echo addslashes(lsGetSVGIcon("globe")); ?>'
    	            });
    	               
    	            $settingsButton.before($syncButton);
    	            
    	        }, 500);
    	    });
    	</script>
    	    
    	<style>
    	.ls-sync-languages-button:hover {
    	    color: #fff;
    	    background: #54575f;
    	    border-color: #0000;
    	    transition: opacity 0.2s;
    	}
    	</style>
    	<?php
    }
    add_action('admin_footer', 'child_theme_layerslider_add_sync_button');
    
    // 5. MANUAL TRIGGER
    function child_theme_layerslider_manual_sync() {
        if (!isset($_GET['ls_sync']) || $_GET['ls_sync'] != '1') {
            return;
        }
        
        if (!current_user_can('manage_options')) {
            wp_die('No permission');
        }
        
        $success = child_theme_patch_layerslider_template();
        
        $redirect_url = admin_url('admin.php?page=layerslider');
        
        if ($success !== false) {
            $redirect_url = wp_json_encode(add_query_arg('ls_synced', '1', $redirect_url));
        } else {
            $redirect_url = wp_json_encode(add_query_arg('ls_sync_failed', '1', $redirect_url));
        }
        
        wp_redirect($redirect_url);
        exit;
    }
    add_action('admin_init', 'child_theme_layerslider_manual_sync', 1);
    
    // 6. AUTO-PATCH after plugin update
    function child_theme_layerslider_after_update($upgrader_object, $options) {
        if ($options['action'] !== 'update' || $options['type'] !== 'plugin') {
            return;
        }
        
        if (!isset($options['plugins'])) {
            return;
        }
        
        foreach ($options['plugins'] as $plugin) {
            if (strpos($plugin, 'layerslider') !== false || strpos($plugin, 'LayerSlider') !== false) {
                // Run patch automatically after LayerSlider update
                child_theme_patch_layerslider_template();
                break;
            }
        }
    }
    add_action('upgrader_process_complete', 'child_theme_layerslider_after_update', 10, 2);
    
Viewing 30 results - 61 through 90 (of 16,887 total)