現在WordPressで自作テーマ構築中ですが、is_page_templateが思うように機能しなかったため、メモとして残しておきます。
まず、状況としてはWordPress側の表示設定では「ホームページの表示 」を「最新の投稿」にしており、home.phpがフロントページになっています。(front-page.phpは存在しない)
やりたいことは、ページによってCSSファイルを分けており、それぞれのページを読み込んだ際にそれぞれのCSSを適用させたいといったこと。
他のページ、例えばaccess.phpは固定ページを作成し、テンプレートに「Template Name: access」を適用させており、is_page_template(‘access.php’)が機能します。
しかしフロントページであるhome.phpに同様の設定をしis_page_template(‘home.php’)の記述をしても機能しません。
フロントページに関しては上記の記述ではダメなようです。というわけでis_front_pageを使えば解決しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function enqueue_custom_styles() { if (is_front_page()) { wp_enqueue_style('home-style', get_template_directory_uri() . '/css/home.css', array(), filemtime(get_template_directory() . '/css/home.css')); } if (is_page_template('contact.php')) { wp_enqueue_style('contact-style', get_template_directory_uri() . '/css/contact.css', array(), filemtime(get_template_directory() . '/css/contact.css')); } if (is_single()) { wp_enqueue_style('single-style', get_template_directory_uri() . '/css/single.css', array(), filemtime(get_template_directory() . '/css/single.css')); } // style.css を全ページで読み込む wp_enqueue_style('global-style', get_template_directory_uri() . '/style.css', array(), filemtime(get_template_directory() . '/style.css')); } add_action('wp_enqueue_scripts', 'enqueue_custom_styles'); |
フロントページに関してはis_page_template(‘home.php’)ではなく、is_front_page()を使います。そのため、固定ページへの登録自体は不要です。
他にもいろいろあると思いますが、一つの解決法として残しておきます。