AsaDesign

レシピサイトを作る(header.php)

参考書:
水野史人『WordPressユーザーのためのPHP入門

  • HTMLの先頭からbodyの少しあとまでの部分を管理する。

今回はヘッダーにナビゲーションやロゴを配置しないので、画面上に表示されるものは無し

function.phpの完成コード

<?php 
function theme_scripts() {

  // CSS読み込み&出力
  wp_enqueue_style('theme-style', get_stylesheet_uri(), array(), wp_get_theme()->get('Version'));

  // JavaScript読み込み&出力
  wp_enqueue_script(
  'theme_scripts-fadein',
  get_theme_file_uri( '/js/fadein.js' ),
  array(),
  wp_get_theme()->get('Version'),
  true );
}
//適切なタイミングで実行
add_action( 'wp_enqueue_scripts', 'theme_scripts' )

適切なタイミングでファイルを読み込ませるため、

ファイルを読み込むための関数theme_scripts()をアクションフックwp_enqueue_scriptsに登録している。

header.phpの完成コード

<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
  <meta charset="<?php bloginfo('charset'); ?>"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <?php wp_head(); ?>
</head>

<body <?php body_class(); ?>>
  <?php wp_body_open(); ?>

  <div class="container">
    <main>

html出力結果(ざっくり)

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>サイト名</title>
  <link rel='stylesheet' id='theme-style-css' href='https://~~.com/wp-content/themes/テーマ名/style.css?ver=1.4' type='text/css' media='all' />
  <script src="https://~~/wp-content/themes/テーマ名/js/fadein.js?ver=1.4 id=theme_scripts-fadein-js"></script>
</head>

<body class="home blog">
  <div class="container">
    <main>

解説

1. 言語属性と文字コード

①language_attributes()

WordPressの言語情報を取得して表示する。
日本語でのみ表示するテーマであればそれほど意味はないが、公式配布のテーマでは使用されている。

出力例

<html lang="ja">

②bloginfo(“name/description/charset”)

ブログの情報を出力する。

出力例

<meta charset="UTF-8">

Webサイトのタイトル / Webサイトの説明 / Webサイトの文字コード などを出力できる。

2. wp_head()とwp_body_open()は必須

どちらもアクションフックを登録する関数。

①wp_head()

function.phpに記載のスタイルシートやjavascript、ページのタイトルを出力する。

出力例

<title>サイト名</title>
...
<link rel='stylesheet' id='theme-style-css' href='https://~~.com/wp-content/themes/テーマ名/style.css?ver=1.4' type='text/css' media='all' />
...
</head>

②wp_body_open()

<body>タグの直後にJavaScriptを出力したい時に使う。
そうでなくても必ず書く。(プラグインが正常に動作しなくなる原因になるため)

3. body関連の出力

①body_class()

<body <?php body_class(); ?>>

出力例

<body class="home blog">

ページごとに異なるclassを出力する。

4. function.php

CSSファイルとJavaScriptファイルを、適切なタイミングで読み込むための記述。

①wp_enqueue_style()

CSSファイルを読み込む。
プロパティはハンドル名, URL(false), 依存関係(空の配列), バージョン(false), メディア(all)

ちなみに複数ファイルを読み込む時は「wp_register_style()」を使用する。
【ワードプレス】wp_enqueue_styleで、3つ以上のCSSを読み込む場合の書き方。

wp_enqueue_style('theme-style',get_stylesheet_uri(), array(), wp_get_theme()->get('Version'));

出力例

<link rel='stylesheet' id='theme-style-css' href='https://~~.com/wp-content/themes/テーマ名/style.css?ver=1.4' media='all'>

②wp_enqueue_script()

JavaScriptファイルを読み込む。
プロパティはハンドル名, URL(false), 依存関係(空の配列), バージョン(false), 読み込み位置(false)

「読み込み位置」はwp_footer関数でscript要素を出力するかどうかを指定する。

wp_enqueue_script(
  'theme_scripts-fadein',
  get_theme_file_uri( '/js/fadein.js' ),
  array(),
  wp_get_theme()->get('Version'),
  true );

出力例

<script src="https://~~/wp-content/themes/テーマ名/js/fadein.js?ver=1.4 id=theme_scripts-fadein-js"></script>

③wp_enqueue_scripts()

上二つ専用のアクションフック。適切なタイミングで実行してくれる。
(wp_enqueue_styleのアクションフックは存在しない)

function tneme_scripts() {
  wp_enqueue_style(...);
  wp_enqueue_script(...);
}

add_action('wp_enqueue_scripts', 'theme_scripts');