これは私の関数ファイルで使用しているコードです。
add_action('init', 'sort_out_jquery_pngfix_frontend');
function sort_out_jquery_pngfix_frontend() {
global $wp_scripts;
if(!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', array(), NULL, true);
wp_register_script('dd_belatedpng', get_stylesheet_directory_uri() . '/js/dd_belatedpng.js', array(), NULL, true);
$wp_scripts->add_data('dd_belatedpng', 'conditional', 'lt IE 7');
}
}
add_action('wp_print_scripts', 'register_theme_scripts');
function register_theme_scripts() {
if(!is_admin()) {
wp_enqueue_script('modernizr', get_stylesheet_directory_uri() . '/js/modernizr-1.7.min.js', array(), NULL, false);
wp_enqueue_script('googlemaps', 'http://maps.google.com/maps/api/js?sensor=false', array(), NULL, true);
wp_enqueue_script('jquery');
wp_enqueue_script('dd_belatedpng');
wp_enqueue_script('sc_wc_js', get_stylesheet_directory_uri() . '/js/function.js', array('jquery', 'dd_belatedpng'), '1.0', true);
}
}
私は$wp_scripts->add_data('dd_belatedpng', 'conditional', 'lt IE 7');
を使用して、このスクリプトに条件付きステートメントを追加していますが、オンラインで見つけることができますが、機能しません。条件付きコードは表示されていませんが、jsファイルは表示されています。
なぜこれが機能しないのですか?
コードを簡単に見ると、この条件はスクリプトではなくスタイルに対してのみ処理されるようです。
これは長いショットですが、 登録 スクリプト、 その後 条件式での追加、 その後 スクリプトのキューへの登録を試すことができます。
// Register the script
wp_register_script( 'dd_belatedpng', get_stylesheet_directory_uri() . '/js/dd_belatedpng.js', array(), NULL, true );
// Attempt to add in the IE conditional tags
$wp_scripts->add_data('dd_belatedpng', 'conditional', 'lt IE 7');
// Enqueue the script
wp_enqueue_script( 'dd_belatedpng' );
それがうまくいくかどうか私は知らない
_編集_
関連するTracチケットに基づいて、$wp_scripts
はこのメソッドをサポートしていないようです。
wp_enqueue_script()
システムからスクリプトを取り出し、wp_print_scripts
またはwp_head
にフックされたプラグイン可能な関数の中で、条件付きで囲まれたIEスクリプト呼び出しをエコーするだけです。確かに理想的ではありませんが、これが使い捨てクライアントのテーマであれば、他の人がスクリプトを登録解除する必要があることを心配する必要はありません。
WPは私がやろうとしていたことをサポートしていないので、これは私が整備しなければならなかった回避策です。
functions.php
add_action('init', 'sort_out_jquery_pngfix_frontend');
function sort_out_jquery_pngfix_frontend() {
if(!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', array(), NULL, true);
wp_register_script('dd_belatedpng', get_stylesheet_directory_uri() . '/js/dd_belatedpng.js', array(), NULL, true);
}
}
add_action('wp_print_scripts', 'register_theme_scripts');
function register_theme_scripts() {
if(!is_admin()) {
wp_enqueue_script('modernizr', get_stylesheet_directory_uri() . '/js/modernizr-1.7.min.js', array(), NULL, false);
wp_enqueue_script('googlemaps', 'http://maps.google.com/maps/api/js?sensor=false', array(), NULL, true);
wp_enqueue_script('jquery');
wp_enqueue_script('sc_wc_js', get_stylesheet_directory_uri() . '/js/function.js', array('jquery'), '1.0', true);
}
}
footer.php
<?php wp_footer(); ?>
<!--[if lt IE 7]>
<?php wp_print_scripts(array('dd_belatedpng')); ?>
<script>DD_belatedPNG.fix("img, .png_bg");</script>
<![endif]-->
Wp-includes/vars.phpの$is_IE
でこれに対する部分的な解決策を見つけたところです。
function emporium_enqueue_scripts() {
global $is_IE;
if( $is_IE ) {
wp_register_script( 'emporium-focus' , get_template_directory_uri() . '/library/focus.js', '', '', true );
wp_enqueue_script( 'emporium-focus' );
}
}
add_action('init', 'emporium_enqueue_scripts');
Library/focus.jsはif IE
ベースでロードされるようですが、スクリプトに対してIEバージョン条件を実行するためのコアはありません。 Tracチケット のように/ /件名は当分の間棚に入れられています。
フッターに入れているようです。 JSファイルのページの終わりを見ましたか?
これはスクリプトにも働きます。ただし、状況が1つだけの場合は、スクリプトが最初にregistered
であったとします。あなたはenqueue
に直行することはできません。 register
- > add_data
- > enqueue
のようにしなければなりません。これはスクリプトでもスタイルでも同じルールです。
これがWordpress 4.2以上の作業例です。
この最初の例は以前に回答された ここ 。
wp_register_script("ie_jshandle",
get_template_directory_uri() . "/js/jsSpecificIE.js",
array(),
'1.0',
false );
wp_enqueue_script("ie_jshandle");
wp_script_add_data("ie_jshandle", "conditional", "lt IE 9");
$wp_scripts
変数をこのように使うこともできます。
function wpse_20873_enq_scripts() {
global $wp_scripts;
wp_register_script("ie_jshandle",
get_template_directory_uri() . "/js/jsSpecificIE.js",
array(),
'1.0',
false );
wp_enqueue_script("ie_jshandle");
$wp_scripts->add_data("ie_jshandle", "conditional", "lt IE 9");
}
add_action("wp_enqueue_scripts", "wpse_20873_enq_scripts");