web-dev-qa-db-ja.com

テンプレートファイルから<head>セクションにスタイルを移動する方法

次のような状況を想像してみてください。

//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 } ?>
2
Paul

関数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' );
?>
2
amit

オプション1は、同じis_page_templateを使用し、wp_enqueue_styleを使用することです。これは、このページテンプレートが利用可能な場合にのみスタイルシートを追加します。

オプション2は、このコードをページテンプレートヘッダに埋め込むことです(これは他のテンプレートでは明らかに見えません)。

1
Mario Peshev