如何在刷新页面或再次登录/注销时保存下载链接按钮的点击

时间:2020-09-03 作者:Jain

我在wordpress网站上工作,我几乎陷入了一种情况,我想要的是:_

我有一个简历页面,其中显示了来自wp\\U Posteta表的简历帖子,每个帖子都有一个downlaod链接按钮,用户可以下载pdf格式的特定帖子,现在棘手的部分是:-每个用户只能下载每篇帖子5次,这意味着一篇帖子只能下载5次,单击5次下载按钮后,下载按钮消失了(到目前为止一切正常)

  • 我现在想要的是保存下载按钮的点击;例如:-我有5次点击特定简历帖子的下载链接按钮,我现在在刷新页面时使用了2次点击我想要的其余3次点击,而不是全部5次点击,在页面上重新加载或特定用户的登录/注销**下面是我的简历页面截图

    View Image

    下面是我用来在点击5次后隐藏按钮的js。

    <script>
                     $(document).ready(function(){
                         $(".gotocls").click(function() {
                             count= $(this).attr("data-click");
                             count ++;
                                 if(count==5){
                                     $(this).hide();
                                             }
                       else{
                            $(this).attr(\'data-click\', count);
                            }
                             });
                         });
                </script>
                
                <a data-click="0" class="dkpdf-button gotocls" href="www.downloadlin.com">Downlaod Resume</a>
    

  • 1 个回复
    最合适的回答,由SO网友:Aditya Agarwal 整理而成

    所以

    理想的方法是使用一些标识符并将其保存在数据库中。但这只能发生在用户登录的情况下,在这种情况下,我们可以使用user meta来保存点击次数,或者我们可以使用user IP将其保存为瞬态。用户IP同样意味着,您需要卷入政策和所有方面的争论,因为IP被视为私人信息。

    策略是使用本地存储或Cookie,我们本可以使用Cookie,但由于GDPR的疯狂使您将内容包含在策略中,我始终更喜欢将数据存储在本地存储中。

    因此,我们将分配不同的data-click="n" 每个链接的值,其中n是每个链接的唯一值。当用户点击链接时,我们将使用本地存储的格式,{post id}+{data click attribute},该值将是点击链接的次数。

    $(document).ready(function() {
      var PostId = 2;
         var i = 0;  
    $(\'.gotocls\').each(function() {
      jQuery(this).attr(\'data-click\', i);
      var ClickId = $(this).attr(\'data-click\');
      var LocalKey = PostId + \'+\' + ClickId;
      if(localStorage.getItem(LocalKey)){
        if(localStorage.getItem(LocalKey) == \'5\'){
          $(this).hide();
        }
      }
      else{
        localStorage.setItem(LocalKey,0);
      }
       i++ 
    });
    });
    
    
    您需要自己将post id输入到代码中。上面的代码在页面加载时运行,检查已经单击了5次的按钮并将其隐藏。如果存在从未单击过的链接,它将创建一个值为0的新本地存储项,

    
    
    
      $(document).ready(function(){
       $(".gotocls").click(function() {
           var PostId = 2;
          var ClickId = $(this).attr("data-click");
         var LocalKey = PostId + \'+\' + ClickId;
         count = localStorage.getItem(LocalKey);
         count ++;
           if(count > 4){
                    localStorage.setItem(LocalKey, 5);
                    $(this).hide();
           }
           else{
             localStorage.setItem(LocalKey, count);
           }
       });
      });
    
    
    此代码负责处理单击。每次单击时,它都会增加单击的值,并在达到限制时隐藏。我还没有测试代码,但你可以试试,我对它寄予厚望。对于Post Id,您可以手动键入Post Id,也可以将其用作内联JS,并且echo get_the_ID(); 得到你想要的。

    相关推荐

    不要在存档-产品.php的循环中显示子类别

    目前,我正在使用的网站archive-product.php 要加载Woocommerce产品循环,请加载content-product.php 模板零件。但是,在我的循环中,如果有子类别,它们将显示在循环中,而不是产品,以及类别图像和“查找更多信息”按钮。我怎么能忽略子类别,只为循环中的每个主要类别加载100%纯产品?