WordPress サイトのホームページに jquery ベースのカスタム スライダーがあります。テーマの functions.php ファイルで以下のコードを使用して、jQuery (jquery.js) とスライダー js (jquery.advanced-slider.js) をロードしています。
function my_load_scripts() {
if (!is_admin()) {
wp_enqueue_script("jquery");
if (is_home()) {
wp_enqueue_script('theme-advanced-slider', get_template_directory_uri().'/js/jquery.advanced-slider.js', array('jquery'));
wp_enqueue_script('theme-innerfade', get_template_directory_uri().'/js/innerfade.js', array('jquery'));
}
}
}
add_action('wp_enqueue_scripts', 'my_load_scripts');
ここで、wp_head(); の前に、header.php ファイルに以下のコードを追加します。
<script type="text/javascript">
var $j = jQuery.noConflict();
$j(document).ready(function () {
//Slider init JS
$j(".advanced-slider").advancedSlider({
width: 614,
height: 297,
delay: 1000,
pauseRollOver: true
});
});
</script>
ここで、jquery.js と jquery.advanced-slider.js が上記の JavaScript コードの後にロードされるため、スライダーが機能しないことは明らかです。wp_head() 呼び出しの後に配置すると<head>
、スライダーが機能します。
しかし、 wp_head() の後に置くと、それはハックではないでしょうか? コードをきれいにしたい。21 のテーマが明確に言うように
/* Always have wp_head() just before the closing </head>
* tag of your theme, or you will break many plugins, which
* generally use this hook to add elements to <head> such
* as styles, scripts, and meta tags.
*/
私はここで非常に混乱しています。ここで非常に単純な手がかりが欠けている可能性があります。しかし、私を助けてください。JavaScript を wp_head() の前に配置し、jquery.js とslider.js がロードされた後にロードする最良の方法は何でしょうか?