wpのfunction.phpでis_home()など条件分岐を使えない時の対処方法
備忘録の記事です。先日、ワードプレスのfunction.phpでis_home()などの条件分岐を使えない時があったので、その対処方法を紹介します。
※答えはすべてこちらの記事様にあります。
https://www20.atwiki.jp/kobapan/pages/112.html
要点は、function.phpは起動時に読込されるため、まだページが生成されておらず、is_home()などの条件分岐がfalseになってしまう。
そのため、解決法としては、条件分岐を関数内に入れて、フックで使用すればOK、とのこと。
js読込などをfunction.phpでやっている場合、この条件分岐ルールを知っていると、けっこう便利。
たとえば下記のソースコードでは、トップページ(フロントページ)に、javascript_top.jsを読込させて、その他ページでは、javascript.jsを読込させており、ページに応じて、不要な記述を読込させない処理が可能となる。
<?php
add_action( 'wp_enqueue_scripts', 'my_scripts' );
function my_scripts() {
if (is_home() || is_front_page()){
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'javascript',get_template_directory_uri().'/js/javascript_top.js',array('jquery'));
}else{
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'javascript',get_template_directory_uri().'/js/javascript.js',array('jquery'));
}
}
?>
出し分けする際、かなり便利です。