Problema:
Necesito crear un shortcode que contenga un valor extraído de una etiqueta segura.
Cuando hago eco de "document.write(localStorage.getItem('getnum'));";
el código muestra el valor 85.
Pero cuando lo devuelvo (el siguiente código), el código abreviado [showpoints] no muestra ningún valor.
¿Podría por favor indicarme cómo devolver el valor?
Código que probé:
<?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'); Consola:
No hay error
HTML (el código proviene de un complemento de punto y recompensa de 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>6 necesitaría configurarlo.return con echo en su función de devolución de llamada.do_shortcode en su plantilla!Así que tu código sería algo como esto:
<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]'); Este do_shortcode('[showpoints]'); hará la magia aquí! Así que colóquelo en su plantilla donde desea generar el valor.
Manera alternativa
De acuerdo con Mozilla Docs , no necesita usar JSON.stringify para establecer un valor de cadena único en localStorage , pero en caso de que no pueda hacer funcionar el primer método, use el siguiente código en su lugar:
<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]'); Otra forma de usar return
Si necesita return el valor en su función de devolución de llamada, use este código:
<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]');