javascript - 如何将 WordPress 帖子 ID 传递到 HTML5 本地存储

标签 javascript jquery wordpress html

我有一个 WordPress 网站,其中列出了同位素布局中的自定义帖子类型项目。每个项目都有一个最喜欢的按钮。一旦您喜欢它,星星就会通过 CSS 突出显示。当您转到该项目时,我希望能够看到该项目已被收藏。

我刚刚意识到我的脚本不存储该按钮的 ID,因此它不会在单个页面上显示它,而只是在收藏它的页面上显示。这是脚本:

  if (typeof(localStorage) == 'undefined') {
    document.getElementById("result").innerHTML =
      'Your browser does not support HTML5 localStorage. Try upgrading.';
  } else {
      $(".grid-item").each(function(i, el) {
        if (localStorage['fav' + i] == 'addfave') {
          $(this).addClass('addfave');
        }
      });
  }

  $(document).ready( function() {

    // ADD FAVE


    $( ".fav" ).click(function(e) {

      e.preventDefault();

      var $item = $(this).closest('.grid-item');
      var index = $('.grid-item').index($item);

      //localStorage.removeItem('background');
      $item.toggleClass('addfave');

      if ($item.hasClass('addfave')) {
        console.log(index)
        localStorage.setItem('fav' + index, 'addfave');
      } else {
        localStorage.removeItem('fav' + index);

        if (localStorage['fav' + i] == null) {
        }
      }
    });
  });

我的按钮看起来像这样,我使用 CSS 在 span 标记中显示星号

<a href="#" id="fav<?php echo $post->ID; ?>" class="fav" title="[+] Add as favorite"><span></span></a>

最佳答案

您的链接 ID 中已经有一个帖子 ID,因此无需重做,您只需将使用索引号识别网格项更改为使用帖子 ID。

if (typeof(localStorage) == 'undefined') {
    document.getElementById("result").innerHTML =
      'Your browser does not support HTML5 localStorage. Try upgrading.';
  } else {
    console.log(localStorage);

      $(".fav").each(function(i, el) {
        if (localStorage[el.id] == 'addfave') {
          $(this).closest('.grid-item').addClass('addfave');
        }
      });
  }

  $(document).ready( function() {

    // ADD FAVE


    $( ".fav" ).click(function(e) {

      e.preventDefault();

      var $item = $(this).closest('.grid-item');
      var index = this.id;

      //localStorage.removeItem('background');
      $item.toggleClass('addfave');

      if ($item.hasClass('addfave')) {
        localStorage.setItem( index, 'addfave');
      } else {
        localStorage.removeItem(index); 
      }
    });
  });

为了演示,请看下面的 jsfiddle,它不是很令人兴奋,但在收藏时它会变成红色,您可以添加更多网格项目并更改顺序,它会收藏正确的项目。

https://jsfiddle.net/a71b4zd8/6/

现在我不知道单页的意思,但我假设在单页模板上。上面的功能不适合在该页面上标记收藏夹。我不知道您的 html 结构,但用于唯一标识页面的典型 id 可能是 post-{$postif}

您应该在创建脚本来检查帖子 ID 时考虑到这一点。

关于javascript - 如何将 WordPress 帖子 ID 传递到 HTML5 本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36740615/

相关文章:

javascript - MS Office Firefox 插件 (NPAPI)

JQuery Double 每个函数

javascript - jQuery on() 方法跨浏览器兼容性?

wordpress - 如何将 phpBB 与 Wordpress 集成

php - 如果在 WooCommerce Checkout 中选中自定义复选框,则删除运费

javascript - wordpress 联系表格 7 插件在控制台上返回 js 错误

javascript - 莫名其妙的 "Undefined is not a function"错误 — 由 "getElementsById"引起

javascript - 如何从存储排序的jquery tablesorter获取cookie值?

javascript - 从 Jquery Ajax 调用 getparameter

javascript - WordPress 中的本地化 jQuery 确认按钮