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 获取值的主要内容,如果未能解决你的问题,请参考以下文章