Wordpress 如何使用简码从 localStorage 获取值

Posted

技术标签:

【中文标题】Wordpress 如何使用简码从 localStorage 获取值【英文标题】:Wordpress how to use shortcode to get a value from localStorage 【发布时间】:2021-12-05 23:48:13 【问题描述】:

问题: 我需要创建一个短代码,其中包含从强标签中提取的值。 当我回显“document.write(localStorage.getItem('getnum'));”; 代码显示值 85。 但是当我返回它(以下代码)时,短代码 [showpoints] 没有显示任何价值。 请告诉我如何返回值?

我尝试过的代码:

    <?php
         ?>
    <script type="text/javascript">
      jQuery(document).ready(function($) 
        let getnum = $('div.elementor-widget-container p > strong').text();
        JSON.parse(localStorage.getItem('getnum'));
      );
    </script>

    <?php
    function points_show_function() 
    return "<script>document.write(localStorage.getItem('getnum'));</script>";
    
    add_shortcode('showpoints', 'points_show_function');

控制台: 没有错误

HTML(代码来自 yith 积分和奖励插件):

<div class="elementor-element elementor-element-c1d0790 elementor-widget elementor-widget-text-editor" data-id="c1d0790" data-element_type="widget" id="pointsid" data-widget_type="text-editor.default">
    <div class="elementor-widget-container">
        <p>Your credit is  <strong>85</strong> Points</p>                       
    </div>
</div>

【问题讨论】:

感谢 agin Ruvee :) 根据您的指示,我学习了管理代码,并且,在第 6 行,我设置了值 => const obj = JSON.parse(localStorage.getItem('getnum '));,然后我改成 echo => function points_show_function() $showpoint = isset($_GET['obj']);回声 $showpoint; ,但它什么也没显示.. 而且.. 我也试过 var obj = JSON.parse(localStorage.getItem('getnum'));,但仍然什么也没显示... 你能教我在哪里解决吗?非常感谢 Ruvee 【参考方案1】:
    您需要先设置该值,以便稍后获取!在线6 你需要设置它。 在您的回调函数中将return 替换为echo。 您需要在模板中使用do_shortcode 来调用您的短代码!

所以你的代码应该是这样的:

<script type="text/javascript">
  jQuery(document).ready(function($) 
    let getnum = $('div.elementor-widget-container p > strong').text();
    localStorage.setItem('getnum', getnum);
  );
</script>

<?php
add_shortcode('showpoints', 'points_show_function');

function points_show_function()

  echo "<script>document.write(localStorage.getItem('getnum'));</script>";


do_shortcode('[showpoints]');

这个do_shortcode('[showpoints]'); 将在这里施展魔法!所以把它放在你想要输出值的模板上。


另一种方式

根据Mozilla Docs,您不需要使用JSON.stringify 将单个字符串值设置为localStorage,但以防万一您无法使第一种方法起作用,请改用以下代码:

<script type="text/javascript">
  jQuery(document).ready(function($) 
    let getnum = $('div.elementor-widget-container p > strong').text();
    localStorage.setItem('getnum', JSON.stringify(getnum));
  );
</script>

<?php
add_shortcode('showpoints', 'points_show_function');

function points_show_function()

  echo "<script>document.write(JSON.parse(localStorage.getItem('getnum')));</script>";


do_shortcode('[showpoints]');

使用return的另一种方式

如果您需要 return 回调函数中的值,请使用以下代码:

<script type="text/javascript">
  jQuery(document).ready(function($) 
    let getnum = $('div.elementor-widget-container p > strong').text();
    localStorage.setItem('getnum', JSON.stringify(getnum));
  );
</script>

<?php
add_shortcode('showpoints', 'points_show_function');

function points_show_function()

  return "<script>document.write(JSON.parse(localStorage.getItem('getnum')));</script>";


echo do_shortcode('[showpoints]');

【讨论】:

哦,两者都很好用,谢谢 Ruvee :) 唯一的问题是我需要将简码添加到动态标签中,但动态 gtas 只能识别 returen 值。我尝试了几次,但它只是不识别回声值。我想知道您是否可以让我知道如何返回值?再次感谢 Ruvee 当然!刚刚更新了我的答案,请参阅最后一个解决方案。您需要使用 return AND echo do_shortcode('[showpoints]'); 的组合。 非常感谢 Ruvee :) 我尝试了返回码,它显示 85,但发生了一些奇怪的事情。网站显示 85,但动态标签显示 NaN,所以我检查了一个检查页面。它显示“85”。它详细显示了 script>document.write(JSON.parse(localStorage.getItem('getnum')));"85"。我还检查了代码返回'30'的动态标签;动态标签显示30。所以......在我的拙见中,我似乎是由于“”。如果是这样,我很抱歉,但请教我如何彻底删除“”? Hi Ruvee:我查了很久,发现回显值包括 ,所以它在动态标签中不起作用。我正在寻找一种仅提取没有脚本标签的数字的方法。我认为这与简码不同。非常感谢您的帮助:)

以上是关于Wordpress 如何使用简码从 localStorage 获取值的主要内容,如果未能解决你的问题,请参考以下文章

如何在wordpress中递归解码简码

如何在 WordPress 简码中使用 AJAX?

如何在 wordpress 选项中保存简码的内容?

如何在非 wordpress 页面中调用简码?

Wordpress 从内容中删除简码

WordPress Shortcode(简码)介绍及使用详解