次のような状況を想像してみてください。
//header.php contains:
<header id="header">logo and navigation</header>
//my-template.php contains:
<?php get_header(); ?>
<style type="text/css">#header { display: none; }</style>
<div class="main-container-of-my-template"></div>
<?php get_footer(); ?>
最近のブラウザ(IE9を除く)ではmy-template.phpの<header>
を無効にしますが、有効な解決策ではありません。 header.phpの<head>
にそのスタイルをロードするために、my-template.phpで直接wp_enqueue_style();
のようなものを使用する方法はありますか?有効にするだけです。
私はこのモジュール式を保ちたいので、このようなifステートメントをheader.phpに入れたくありません(もうスタンドアロンのモジュール式ページテンプレートにはなりません)。
<?php if(is_page_template( 'my-template.php' )){ ?>
<style type="text/css">#header { display: none; }</style>
<?php } ?>
関数get_header();
の前にスタイルを置くことについてはどうですか
<style type="text/css">#header { display: none; }</style>
<?php get_header();?>
<div class="main-container-of-my-template"></div>
<?php get_footer(); ?>
ただし、Webサイトの<html>
セクション内にない<head>
の前でもスタイルが読み込まれるため、これはお勧めできませんが、要件に応じて、これがmy-template.phpファイルを編集してスタイルを追加する唯一の方法になります。
Header.phpを変更せずに<head>
セクションにスクリプトをロードする2番目の方法(推奨)は、<head>
のスタイルをエンキューするためにthemes functions.phpを使用することです。これがうまくいくコードです -
テンプレートディレクトリに新しいnew-style.css
ファイルを必要なスタイルで作成してください。
<?php
function wpse_60052_load_style() {
if(is_page_template( 'my-template.php' )) {
wp_enqueue_style('mystyle', get_bloginfo('template_directory').'/new-style.css');
}
}
add_action( 'wp_enqueue_scripts', 'wpse_60052_load_style' );
?>
オプション1は、同じis_page_templateを使用し、wp_enqueue_styleを使用することです。これは、このページテンプレートが利用可能な場合にのみスタイルシートを追加します。
オプション2は、このコードをページテンプレートヘッダに埋め込むことです(これは他のテンプレートでは明らかに見えません)。