Изменить / заменить полный код Javascript - PullRequest
0 голосов
/ 18 мая 2018

Мне нужно добавить атрибут к этой строке Javascript на моем сайте WordPress.

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

Можно ли создать функцию, найти эту точную строку кода и заменить ее другой только надополнительный атрибут в нем?

Изменить

Хорошо, поэтому невозможно изменить эту строку после ее загрузки.Боялся, что это проблема.

Я сейчас пытаюсь найти другое решение, и я думаю, что я почти у цели, но почему-то не могу понять, как загрузить скрипт обратно.

Сценарий, о котором я говорюabout зарегистрирована в файлах плагина (которые я не хочу редактировать).

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

Теперь я нашел способ удалить этот скрипт из очереди, чтобы он не загружался.Я делаю это в моей функции. Php

Functions.php

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

Теперь Cookie-файл Instagram еще не установлен.Я использую Cookiebot и хочу дать пользователям возможность установить этот файл cookie InstaGram.Таким образом, с помощью этого кода вы можете создать оператор if, чтобы что-то делать, когда вы принимаете маркетинговые куки.Это в 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 голосов
/ 18 мая 2018

Если этот скрипт добавлен через ``, и вы знаете, что он дескриптор, вы можете сделать что-то вроде этого

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 - это всего лишь один простой способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...