【问题标题】:How can I pass a PHP variable to a JavaScript function in WordPress?如何将 PHP 变量传递给 WordPress 中的 JavaScript 函数?
【发布时间】:2019-04-04 18:19:33
【问题描述】:

我正在尝试将元素 ID 值传递给 add_action(),这又会在页脚中为 Slick Slider 设置 JS。

我得到的结果是:

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

但我想要的是:

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

这是我目前的代码:

$uniqid = uniqid('rtt_grid_carrousel_');
js_rtt_grid_carrousel( $uniqid );


function js_rtt_grid_carrousel( $uniqid ) {
    add_action('wp_footer', function( $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
    });
}

--编辑-- 沿路编辑。 所以,我们发现 php var 确实被传递给了

 js_rtt_grid_carrousel()

但不是

add_action('wp_footer', function(){...}); inside that function

【问题讨论】:

  • 似乎这应该可行,但我对 PHP 的经验并不丰富。也许尝试将变量输出到页面的几个位置,看看它是否一直正确。
  • 在这一行 $("#").slick({ Put $("#".."").slick ({
  • 您不应该混合使用 PHP 和 JS - 这是一种不好的做法,会导致意外行为。使用 data- 属性创建隐藏的输入或隐藏的 DOM 元素
  • 或者更好的是,我没有看到任何条件语句,所以如果 $uniqid 有效,为什么不使用 if/else - 如果是,请在 .js 文件中添加一个光滑目标的泛型类
  • @wadleo 无效 - 关闭 PHP 允许 HTML - 所以 OP 代码很好

标签: php jquery wordpress


【解决方案1】:

啊!我找到了! :) 你们给了我一些思考的东西。 And searching along I found this here. .

$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
    });
}

专注于“使用”于:

add_action('wp_footer', function() use ( $uniqid ) {...});

我将不得不更多地研究“使用”以了解这是什么,但它确实有效! :) 谢谢大家!

【讨论】:

  • 稍后我可以将 $uniqid 替换为 $args 以在 array() 中传递更多设置。
猜你喜欢
  • 2015-06-08
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
相关资源
最近更新 更多