将ShortCode属性传递给页脚脚本

时间:2015-11-24 作者:ThomasB

我正在尝试生成一个WordPress快捷码,它将显示bxSlider. shortcode函数本身就像一个魔咒;我可以传递数据,并且正确地呈现了短代码。

The problem:

在shortcode中,我还添加了一个属性id, 它将用于传递用于调用滑块的ID,例如:

$(".myid").bxSlider({
所以"myid" 零件将按如下方式传递[myshortcode id="myid"]. 但由于脚本需要放置在页脚中(使用:add_action( \'wp_footer\', \'myshortcode_function\');). 所以,我必须打电话给id 属性位于shortcode函数外部。

谁能解释一下,如何传递该属性,以便我可以在另一个函数中使用它?请不要将我链接到文档。我读了,但我不明白。

2 个回复
最合适的回答,由SO网友:Bruno Cantuaria 整理而成

这很简单。WordPress有一个方便的函数,可以将变量发送到已注册的脚本。它是wp_localize_script. 其工作方式如下:

//First Register Your Script
wp_register_script( \'name-of-script\', \'http://example.com/script.js\', \'\', \'\', true );

//Then send dynamic variables
wp_localize_script( \'name-of-script\', \'globalVar\', array( \'id\' => \'slideTarget\' ) );

//Finally invoke it on Front-End
wp_enqueue_script ( \'name-of-script\' );
这应该在调用脚本之前输出,因为它是在页脚上调用的,所以您可以在您的shortcode函数中调用它。然后,在脚本上,您需要像这样使用它:

$("#" + globalVar.id ).bxSlider({
就这么简单。还有其他选项,如输出全局var或输出带有目标ID的隐藏输入,因此您编写脚本只需查找该隐藏输入值。

SO网友:bonger

如果您只是直接输出javascript,那么可以使用匿名函数use 范围:

    function my_shortcode( $atts ) {
        add_action( \'wp_footer\', function () use ( $atts ) {
            ?>
            <script type="text/javscript">
                jQuery(function ($) {
                    $(".<?php echo $atts[\'id\']; ?>").bxSlider({
                    });
                });
            </script>
            <?php
        } );
    }

相关推荐

Do not parse shortcode in CPT

我有一个CPT,我不想在它的内容中解析shortcode(使用\\u content()函数)。我可以使用remove\\u filter删除短代码的默认过滤器。但我如何确定我只是为了我想要的CPT而删除过滤器?我有一个在页面中使用的快捷码[我的自定义快捷码]。此短代码使用WP\\U查询和输出CPT帖子。我不想在这篇CPT文章中分析短代码。我是否应该在短代码解析挂钩之前用虚拟内容更改短代码,并在之后替换回来?或者我应该在我的CPT输出之前删除短代码的默认过滤器,然后在我的CPT输出完成后再次添加短代码的默