首页 > 解决方案 > 在 Wordpress 中使用 Javascript/JQuery 从 URL 捕获查询字符串并放入站点 cookie

问题描述

希望有人可以提供帮助 :) 我有一个 Wordpress 网站,我们正在向该网站发送参考链接,例如... http://website.com/?ref=hotelname&loc=townname。我们需要在 URL 中获取这些查询,并使用 javascript 将它们放入站点的 cookie 中。然后使用 cookie 填充预订按钮,然后链接到外部自定义预订引擎,我们需要使用 js 传递查询,因为 php 无法与我们的缓存一起正常工作。我被推荐这篇文章,但不幸的是它似乎不起作用如何在 JavaScript 中获取查询字符串值?.

标签: javascriptjquerywordpress

解决方案


你可以通过javascripts做到这一点。首先,您必须从 URL 获取查询字符串,然后必须使用它保存在 cookie 中document.cookie = name + "=" + (value || "") + expires + "; path=/";

<script type="text/javascript">
    // self executing function here
    (function() {
       
        function getParameterByName(name, url = window.location.href) {
            name = name.replace(/[\[\]]/g, '\\$&');
            var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
                results = regex.exec(url);
            if (!results) return null;
            if (!results[2]) return '';
            return decodeURIComponent(results[2].replace(/\+/g, ' '));
        }

        function setCookie(name,value,days) {
        
            var expires = "";
            if (days) {
                var date = new Date();
                date.setTime(date.getTime() + (days*24*60*60*1000));
                expires = "; expires=" + date.toUTCString();
            }
            document.cookie = name + "=" + (value || "")  + expires + "; path=/";
        }

        function getCookie(name) {
            var nameEQ = name + "=";
            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,c.length);
                if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
            }
            return null;
        }

        function eraseCookie(name) {   
            document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
        }

        // query string: ?ref=hotelname&loc=townname
        var ref = getParameterByName('ref'); 
        var loc = getParameterByName('loc'); 
        
        if( ref !== null ){
            setCookie( 'ref', ref, 365 );
        }
        if( loc !== null ){
            setCookie( 'loc', loc, 365 );
        }

    })();
</script>

对于保存,cookie 信用转到设置 cookie 并使用 JavaScript 获取 cookie

要获取查询字符串信用,请参阅如何在 JavaScript 中获取查询字符串值?

测试和工作。

在此处输入图像描述


推荐阅读