如何在WordPress中将PHP变量传递给JavaScript函数?

11 浏览
0 Comments

如何在WordPress中将PHP变量传递给JavaScript函数?

我试图将一个元素ID的值传递给add_action(),而add_action()会为页脚设置Slick Slider的JS。\n我得到的结果是:\n

$("#").slick({...

\n但我想要的是:\n

$("#rtt_grid_carrousel_5bd9bbeabd625").slick({...

\n以下是我目前的代码:\n

$uniqid = uniqid('rtt_grid_carrousel_');
js_rtt_grid_carrousel( $uniqid );
function js_rtt_grid_carrousel( $uniqid ) {
    add_action('wp_footer', function( $uniqid ) {
        ?>
            
        

\n--编辑--\n沿途的编辑。\n所以,我们已经发现php变量确实传递到js_rtt_grid_carrousel(),\n但没有传递到add_action(\'wp_footer\', function(){...});这个函数内部。

0
0 Comments

问题的原因是需要将一个PHP变量传递给一个JavaScript函数。解决方法是使用"use"关键字来将PHP变量传递给匿名函数。

具体的解决方法如下:

1. 首先,创建一个唯一的ID,使用uniqid函数生成一个以"rtt_grid_carrousel_"开头的唯一字符串,并将其赋值给$uniqid变量。

2. 创建一个名为js_rtt_grid_carrousel的函数,该函数接受$uniqid作为参数。

3. 在js_rtt_grid_carrousel函数中,使用add_action函数将一个匿名函数添加到wp_footer动作钩子中。

4. 在匿名函数中,使用"use"关键字将$uniqid变量传递给匿名函数。

5. 在匿名函数中,使用jQuery选择器将$uniqid变量作为参数传递给slick函数,实现对应的功能。

6. 将整个JavaScript代码块嵌入到script标签中,并将该标签添加到wp_footer函数中。

7. 最后,将js_rtt_grid_carrousel函数调用的参数替换为$args,以便在一个数组中传递更多的设置。

以上就是将PHP变量传递给JavaScript函数的解决方法。

$uniqid = uniqid('rtt_grid_carrousel_');
js_rtt_grid_carrousel( $uniqid );
function js_rtt_grid_carrousel( $uniqid ) {
    add_action('wp_footer', function() use ( $uniqid ) {
        ?>
            <script id="rtt_grid_carrousel" type="text/javascript">
                $(document).ready(function () {
                    $("#<?php echo $uniqid ?>").slick({
                        dots: false,
                        arrows: false,
                        infinite: false,
                        slidesToShow: 1,
                        slidesToScroll: 1,
                        draggable: false,
                        vertical: false,
                        centerMode: false,
                        adaptiveHeight: true,
                        // fade: true,
                        // cssEase: "linear",
                    });
                });
            </script>
        <?php
    });
}

请注意上述代码中的"use"关键字。

希望以上解决方法对您有所帮助。

0