2017-06-29 65 views
0

我想在WordPress上使用wp_register_script和wp_enqueue_script FUNCTION排隊腳本,它具有兩個屬性:「完整性」和「crossorigin」。Wordpress腳本與完整性和crossorigin

通常我使用PHP和我的代碼如下所示:

wp_register_script('jquery', 'http' . ($_SERVER['SERVER_PORT'] == 443 ? 's' : '') . '://code.jquery.com/jquery-3.1.1.slim.min.js', false, null); 
wp_enqueue_script('jquery'); 

與任何其他腳本。 wp_register_script接受五個參數(在本例中爲四個)$ handle,$ src,$ deps,$ ver($ media)。我想知道我可以在哪裏添加這兩個屬性。我已經嘗試過:

wp_register_script('jquery', 'http' . ($_SERVER['SERVER_PORT'] == 443 ? 's' : '') . '://code.jquery.com/jquery-3.1.1.slim.min.js'.'integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n"', false, null); 
    wp_enqueue_script('jquery'); 

但它沒有奏效。

任何有同樣問題的人? 這是bootstrap 4的原始腳本,它也具有引導程序和繫繩,具有相同的屬性(完整性和crossorigin),因此它非常新穎,任何類型的幫助都將非常感謝。

回答

1

可以使用script_loader_tag鉤(主要部分其實不是我的代碼,但老實說,我不要」請記住我在哪裏,可能是在SO或WP Stack Exchange的某處):

add_filter('script_loader_tag', 'add_attribs_to_scripts', 10, 3); 
function add_attribs_to_scripts($tag, $handle, $src) { 

// The handles of the enqueued scripts we want to defer 
$async_scripts = array(
    'jquery-migrate', 
    'sharethis', 
); 

$defer_scripts = array( 
    'contact-form-7', 
    'jquery-form', 
    'wpdm-bootstrap', 
    'frontjs', 
    'jquery-choosen', 
    'fancybox', 
    'jquery-colorbox', 
    'search' 
); 

$jquery = array(
    'jquery' 
); 

if (in_array($handle, $defer_scripts)) { 
    return '<script src="' . $src . '" defer="defer" type="text/javascript"></script>' . "\n"; 
} 
if (in_array($handle, $async_scripts)) { 
    return '<script src="' . $src . '" async="async" type="text/javascript"></script>' . "\n"; 
} 
if (in_array($handle, $jquery)) { 
    return '<script src="' . $src . '" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous" type="text/javascript"></script>' . "\n"; 
} 
return $tag; 
} 
2

這是正確的語法:

<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js" integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=" crossorigin="anonymous"></script> 

完整性」 和 「crossorgin」 不是URL的一部分。它們是腳本標籤的一部分。

不幸的是,WordPress目前無法處理入隊腳本的屬性。
但是,他們的工作就可以了。狀態:需要測試:-)
=>Ticket 22249/Wordpress Core