首先,我要求你们所有人在点击负向箭头前全部阅读这个问题,我真的在这里遇到一个非常有线的问题,而且没有在网上找到任何类似的答案。如何在wordpress短代码中多次停止排队同一个脚本
我想要做的事:
我创建一个WordPress插件安装,你只需要添加一个短代码,并通过一些参数与简码后,然后它会显示一个滑块根据您的参数数据在您的文章中。
现在,因为它是一个滑块,它主要是基于jQuery做花哨的东西。现在将shortcode参数传递给jquery,我正在接受wp_localize_script()
的帮助,以便我可以访问我的jquery脚本中的shortcode参数。
问题:
正如我传递简码属性值的本地化剧本,我必须要调用wp_register_script()
,wp_localize_script()
,wp_enqueue_script()
所有add_shortcode()
块内。
因为如果我在add_shortcode()
之外创建另一个函数来排列我的脚本wp wp_enqueue_scripts
动作,那么即使在执行短代码之前它也会被触发。所以wp_localize_script()
不能将shortcode属性传递给jquery脚本。现在
add_shortcode('some_shortcode', function($atts) {
//extracting the shortcode attributes
$shortcode_data = shortcode_atts(array(
'arg1' => '',
'arg2' => ''
..... so on....
), $atts);
extract($shortcode_data);
// doing my programming with the shortcode
// in the end echoing some html
/*--------------------------------------*/
// Now coming the script adding part
$dir = plugin_dir_url(__FILE__);
/* CSS */
wp_enqueue_style('some_style', $dir . 'assets/css/some_style.css', null, null);
/* JS */
wp_register_script ('some_script', $dir . 'assets/js/some_script.js');
wp_localize_script('some_script', 'someData', $shortcode_data);
wp_enqueue_script('some_script', true);
wp_enqueue_script('some_other_script', $dir . 'assets/js/some_other_script.js');
});
我的插件工作得很好,没有任何问题,但无论如何现在而来的大问题。如果我在一个或多个页面中包含这个短代码超过1次,那么每次执行短代码时都会推送相同的css和js文件。
因此,最终,没有一个短代码能够正常工作,因为整个系统会混淆哪些数据传递给哪个js脚本。
如果你们中的任何人都可以帮助我解决这个奇怪的问题,那将会非常有帮助。我真的没有了解如何解决这个奇怪问题的线索。
你确定同一个脚本获得双入列吗?你见过这个吗? WP入队系统是为了防止这种情况发生,只要名称标识符和版本每次都是相同的(在你的情况下它们会是)。 –
使用oop你可以解决这个问题。只需将脚本排入类的构造函数中即可。 –
让我重新审视。给我2分钟 – iSaumya