Как работает функция script_loader_tag? - PullRequest
0 голосов
/ 14 июня 2019

Я видел функцию script_loader_tag, применяемую в functions.php, WordPress, но я изо всех сил пытаюсь полностью понять, как она работает.

Например, я видел такие примеры:

function add_async_defer($tag, $handle) {

    if('googlemaps' !== $handle) {
        return $tag;
    }
    return str_replace(' src', 'async="async" defer="defer" src', $tag);
}
add_filter('script_loader_tag', 'add_async_defer', 10, 2);

и используется для создания тега сценария для API Карт Google:

<script type='text/javascript'async="async" defer="defer" src='https://maps.googleapis.com/maps/api/js?key=AIzaSyBz02VRxO_dgaKsBS62TLL6AW4McNTQiKU&#048;callback=initMap&#038;ver=5.2.1'></script>

Но что означают параметры $ tag и $ handle?

Что означают числа 10 и 2означает в конце add_filter?

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

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Параметры определены ниже:

$ tag : тег для сценария в очереди.

$ handle : сценарий зарегистрировансправиться.Например, jQuery, поставленный в очередь WordPress, имеет дескриптор jquery

. Числовое значение 10 представляет приоритет функции обратного вызова в очереди WordPress для обработки всех функций, подключенных к ловушке script_loader_tag..

Цифра 2 представляет количество параметров, разрешенных в функции обратного вызова.

@ chinLeung также ответил со ссылкой.


УчитываяВаш пример кода следующий должен объяснить вещи:

function add_async_defer($tag, $handle, $src) {
    if('googlemaps' !== $handle) {//Here we check if our handle is googlemaps
        return $tag; //We return the entire <script> tag as is without modifications.
    }
    return "<script type='text/javascript' async='async' defer='defer' src='".$src."'></script>";//Usually the value in $tag variable looks similar to this script tag but without the async and defer
}
add_filter('script_loader_tag', 'add_async_defer', 10, 3);
0 голосов
/ 14 июня 2019

$handle - это имя, которое вы дали сценарию при использовании wp_enqueue_script.

$tag - это тег сценария, который будет отображаться в DOM.

10 является приоритетом вашего фильтра. Изменение на большее число приведет к тому, что фильтр будет выполнен позже в процессе.

И, наконец, 2 - это количество аргументов, которые принимает обратный вызов. В вашем случае это 2, так как есть $tag и $handle.

Для получения дополнительной информации:

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