【问题标题】:WordPress - custom 18+ pop-up alert doesn't work properlyWordPress - 自定义 18+ 弹出警报无法正常工作
【发布时间】:2021-12-31 08:56:51
【问题描述】:

我尝试制作自定义 18+ 警报(仅在首次访问时),但它不起作用.. 基本上在自定义 html 模板中它可以工作,但在 WordPress 上没有 The view on the websitehere,它应该看起来如何,但必须有的是网站的访问者必须看到该网站,这就像模态一样..

第二点必须是,它应该只在第一次访问时显示,当我点击“POKRAČOVAT”按钮后,这个警报应该消失并且不会显示在网站上的任何地方。 我已经尝试了一种 cookie 方式,通过。 Make a splash screen appear only on first visit in Wordpress(接受的答案)

我也尝试过这种方式:Display A Popup Only Once Per User(也接受了答案)但它对我不起作用..让我在header.php中向您展示下面的代码(第二个选项):

<script type="text/javascript"> 
        $(document).ready(function() {
            if(localStorage.getItem('age-test') != 'shown'){
                $("#snippet-ageTest-alertbox").delay(2000).fadeIn();
                localStorage.setItem('age-test','shown')
            }

            $('#snippet-ageTest-alertbox-close').click(function(e) // You are clicking the close button
            {
                $('#snippet-ageTest-alertbox').fadeOut(); // Now the pop up is hiden.
            });
            $('#snippet-ageTest-alertbox').click(function(e) 
            {
                $('#snippet-ageTest-alertbox').fadeOut(); 
            });
        }); 
</script>


<div id="snippet-ageTest-alertbox">        
            <div id="age-test" class="main_background" style="display: block;">
                <div class="age-test-square main_background clearfix">
                    <div class="title">
                        <span>    
                            Pokračovaním potvrzuji, že
                            jsem starší 18 let
                        </span>
                    </div>
                    <div>
                        <a class="agree button-conversion" href="#">
                            Pokračovat
                        </a>
                    </div>
                </div>
            </div>

</div>

【问题讨论】:

标签: javascript php wordpress


【解决方案1】:

您需要设置并检查 cookie。由于这不是 jQuery 原生的,因此您需要一个函数。然后就像您尝试的那样,您想在显示弹出窗口之前检查 cookie 是否已设置。

可以在此处找到一个 javascript cookie 示例https://www.w3schools.com/js/js_cookies.asp

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

jQuery(function($){
    // define your cookie's name.
    let c = getCookie('age-test');
    // check if the cookie is set and if not show modal.
    if (c !== 'shown'){
        $("#snippet-ageTest-alertbox").delay(2000).fadeIn();
        setCookie('age-test', 'shown', '99'); // set number of days expired.
    }
});

【讨论】:

  • 嗨@Howard E 我试过你的答案,但它没有帮助我,你可以在这里看到:LuxGift.cz
  • 我查看了您的网站。控制台中还有另一个与我发布的内容无关的错误。此错误可能会阻止执行进一步的脚本。如果您可以消除该错误,那么我发布的内容应该可以工作。
猜你喜欢
  • 1970-01-01
  • 2017-03-25
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
相关资源
最近更新 更多