更改/替换完整的Javascript代码

时间:2018-05-18 15:06:45

标签: javascript php wordpress attributes

我需要在我的WordPress网站中添加这个Javascript行的属性。

<script type="text/javascript" src="https://www.domainname.com/wp-content/plugins/instagram-feed/js/sb-instagram.min.js?ver=1.8.3"></script>

是否可以创建一个函数,找到这个确切的代码行,并用另一个代码替换它只有一个额外的属性?

修改

好的,所以在加载之后无法更改此行。担心这是问题所在。

我现在尝试另一个解决方案,我想我差不多了,但不知怎的,我无法弄清楚如何加载脚本。

我正在谈论的脚本已在插件文件中注册(我不想编辑)。

wp_register_script( 'sb_instagram_scripts', plugins_url( '/js/sb-instagram.min.js' , __FILE__ ), array('jquery'), SBIVER, true ); //http://www.minifier.org/

现在我找到了一种方法来使这个脚本出列,因此它不会被加载。我在我的function.php

中这样做

的functions.php

    function deque_instagram_javascript(){
    wp_dequeue_script('sb_instagram_scripts');
}
add_action( 'wp_enqueue_scripts', 'deque_instagram_javascript', 100 );

现在尚未设置Instagram Cookie。我正在使用Cookiebot并希望为用户提供设置此InstaGram cookie的选项。因此,使用此代码,您可以创建一个if语句,以便在您接受营销Cookie时执行某些操作。这是在de footer.php

我还创建了一个新变量来重新注册脚本。

Footer.php

    <?php
$instagram_script_register =  wp_register_script( 'sb_instagram_scripts', plugins_url( '/js/sb-instagram.min.js' , __FILE__ ), array('jquery'), SBIVER, true ); //http://www.minifier.org/
        $instagram_script_enq =  wp_enqueue_script( 'sb_instagram_scripts'); //http://www.minifier.org/
    ?>
    <script type="text/javascript">
        function CookiebotCallback_OnAccept() {
            if (Cookiebot.consent.marketing)
            {
                enableInstaMarketing();
            }
        }
            function enableInstaMarketing() {
            var instagram_script_register = "<?php echo $instagram_script_register ?>";
            var instagram_script_enq = "<?php echo $instagram_script_enq ?>";    
            }
    </script>

Dequeue正在运行,但在接受营销Cookie时,我无法再次加载(入队)。

我正在尝试不可能或我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果通过``添加此脚本,并且您知道它的句柄,则可以执行此类操作

add_filter('script_loader_tag', 'additional_script_attributes', 15, 3);

function additional_script_attributes($tag, $handle, $src)
{
    if ($handle !== 'your_script_handle')
    {
        return $tag;
    }

    return str_replace('\'></script>', '\' async></script>', $tag);
}

您可以将async替换为您需要的任何内容。基本上,$tag有html代码来添加这个特定的脚本。您可以根据需要进行编辑,str_replace只是一种简单的方法。