だれかのなにかに役立てるウェブ制作者YoTaの趣味ブログ

wpのfunction.phpでis_home()など条件分岐を使えない時の対処方法

wordpress

備忘録の記事です。先日、ワードプレスの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'));
  }
}

?>

出し分けする際、かなり便利です。

ページ上部に戻る