如何在php中使用WordPress函数wp_enQueue_script()?

时间:2020-03-27 作者:user5447339

我有一个php函数,如下所示。以下功能正在许多地方使用。

function render_brightcove_player($active_feed, $poster_image = false)
{
    $poster = \'\';
    if ($poster_image) {
        $poster = \'poster=\' . esc_url($poster_image);
    }
    ?>
    <div class="hsc-video" onclick="hscLogo()">
        <div class="hsc-video__inner">
            <script src="//players.brightcove.net/1242843915001/SJ3Tc5kb_default/index.min.js"></script>
        </div>
    </div>
    <?php
    wp_enqueue_script(                                      
    \'miscellaneous-scripts\',
    HSC_TEMPLATE_URL . "/assets/js/miscellaneous.js"
    );
}
我添加了wordpress功能wp_enqueue_script(). 内部杂项。我使用的js文件:

function hscLogo() {
    document.getElementsByClassName("hsc-tv-logo")[0].style.display = "none";
}
我想知道这是否是正确的使用方法wp_enqueue_script() php中的函数。我需要放置wp_enqueue_script() 其他地方?

这是我第一次使用wp_enqueue_script 在wordpress中。下面是javascript文件夹/文件的树结构。

enter image description here

1 个回复
SO网友:Tom J Nowell

我想知道这是否是在php中使用wp\\u enqueue\\u script()函数的正确方法。是否需要将wp\\u enqueue\\u script()放在其他地方?

不完全是,以下是官方文件在注释中所说的:

https://developer.wordpress.org/reference/functions/wp_enqueue_script/

The function should be called using the wp_enqueue_scripts action hook if you want to call it on the front-end of the site, like in the examples above. 要在管理屏幕上调用它,请使用admin\\u enqueue\\u scripts操作挂钩。对于登录屏幕,使用login\\u enqueue\\u scripts操作挂钩。在动作挂钩之外调用它可能会导致问题,有关详细信息,请参阅票据#11526。

你这样做的方式可能会起作用,因为它会尝试在页脚中打印脚本,前提是你的主题构建正确并进行了所有正确的调用,例如。wp_head, wp_footer, 等

但除此之外,这种做法是错误的。

而不是:

打印Brightcove player HTML时,将脚本排入队列,使用hscLogo 脚本中的函数,通过执行调用

始终在DOM ready上将脚本排队,检查是否有brightcove播放器如果找到brightcove播放器,请删除徽标,或者更好,不要使用javascript,而是将此CSS放在样式表中:

.hsc-tv-logo {
  display: none;
}