中級者向け 知識

【知識】functions.phpって何をするものなの?

WordPressの知識
この記事は約6分で読めます。

文中の説明画像をクリックすると拡大します。

Pocket

functions.phpの役割って何?

functions.phpはテーマ関数ファイルと呼ばれるもので、index.phpやheader.phpなどのテンプレートファイルとは違う役割を持っています。

index.phpなどのテンプレートファイルは、文章や見出しなどの「サイトの構造」を作るファイルです。それに対してfunctions.phpは、管理画面(ダッシュボード)にカスタムメニューを追加したりとするなどの「サイトの設定や機能」を作るファイルです。

プラグインを導入すると、様々な機能がサイトに追加されます。それと同様に、functions.phpにコードを記述して、様々な機能をサイトに追加できます。

またfunctions.phpは、機能を取り扱うもので、とても繊細なファイルです。記述ミスがあると、場合によっては管理画面(ダッシュボード)自体が表示されなくなってしまうこともありますので、取扱いには注意が必要です。

PHP言語やWordPressのルールをある程度理解した上で、functions.phpを編集しましょう。

なお、画面が真白になった時に慌てないように、こちらのページも読んで起きましょう。

【恐怖】WordPressで画面が真白になった!どうすればいい?
WordPressでは、急に画面が真白になり操作できないことがあります。意外とよく起こるのですが、冷静に対処すれば解決できることがほとんどです。管理画面にアクセスできるなら、そこから対処できます。

functions.phpを子テーマ編集する際の注意点

WordPressでは、テーマファイルがバージョンアップされてアップデートすると、カスタマイズで編集したコードが上書きされて消えてしまいます。それを防ぐために、テーマファイルの編集をするときは、子テーマを作成し編集することが推奨されます。

通常のテンプレートファイルは、親テーマ→子テーマの順に読み込まれますので、子テーマでカスタマイズして記述したコードが上書きされることはありません。

しかし、functions.phpについては、読み込まれる順番が子テーマ→親テーマと逆です。もし親子で重複したアクションフック(機能を作動させるタイミング)があると、親テーマのfunctions.phpが優先されるのことになるで、注意が必要です。

親テーマ・子テーマとは何かを知りたい方は、こちらをご覧ください。

【基本】WordPressの親テーマと子テーマって何?
「子テーマ」とは、テーマとは別ファイルでありながら、同時に読み込まれて、機能とスタイルを引き継いだ、カスタマイズ専用のテーマのことです。「子テーマ」から見たオリジナルのテーマを「親テーマ」と呼ぶことがあります。

具体的にはどんなことができるのか

functions.phpは、設定や機能を作るファイルと説明しました。そのため、サイトに新たな設定や機能を定義する場合、functions.phpに記述することが一般的です。

では、実際どういったもの作ることができるのか、ここではわかりやすいものを紹介していきます。

記事にアイキャッチ画像を設定

//アイキャッチ画像を使用する設定
add_theme_support( 'post-thumbnails' );

このコードを記述すると、記事にアイキャッチ画像を設定できるようになります。

メニューにヘッダー・フッターナビゲーションを追加

//カスタムメニュー
register_nav_menu( 'header-nav', ' ヘッダーナビゲーション ' );
register_nav_menu( 'footer-nav', ' フッターナビゲーション ' );

メニューの設定画面に、設定位置をヘッダーやフッターに設定できる機能を追加します。

カスタム投稿ページを作成

/* カスタム投稿ページを追加 */
add_action( 'init', 'my_post_type' );
function my_post_type() {
register_post_type(
'news',
array(
'label' => '新着情報',
'labels' => array(
'add_new_item' => '新着情報を追加',
'all_items' => '新着情報一覧',
'edit_item' => '新着情報を編集',
),
'public' => true,
'hierarchical' => true,
'has_archive' => true,
'menu_position' => 5,
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes')
)
);
}

通常の記事投稿ページとは別に、新たに投稿ページを作成します。今回の場合だと、新着情報というテーマで新たに投稿ページを作成しました。

このように、様々な機能や設定を追加・定義することで、カスタマイズの幅が広がります。

HTML・CSS言語では、1ページごとにしか設定できないことでも、PHP言語を何行か記述するだけで、全てのページに反映できる機能を追加することが可能です。

その分、PHP言語は複雑ですが、覚えておけばサイトをカスタマイズする際にとても役に立つでしょう。

functions.phpが無いとどうなるの?

例えfunctions.phpのファイルがなくても、サイトは表示されます。しかし、設定によってはfunctions.phpに記述されている機能などもあり、管理画面(ダッシュボード)の項目やサイトに表示されているものが表示されなくなる可能性があります。

例えば、管理画面の以下のような要素です。

  • アイキャッチ画像の設定
  • ウィジェット
  • メニュー
  • カスタム投稿ページ

またfunctions.phpでjQueryを読み込んでいる場合、設定しているアニメーションも作動しません。

管理画面のウィジェットからサイドバーを構築している場合も多いので、サイドバー自体がなくなる場合もあります。

functions.phpで設定していたものがなくなると、例えば、以下のようなことになる可能性もあります。

  • アイキャッチ画像は記事ごとにHTML・CSSで設定する
  • ヘッダーやフッターにメニューを設定する場合はheader.phpやfooter.phpに一から記述する
  • サイドバーの構築はsidebar.phpに一から記述する

後々修正・更新するときも、これらのテーマファイル(header.phpなど)のコードを直接修正することになります。

functions.phpで設定していると、管理画面上で直感的にサイドバーを構築したりメニューを設定したりと、様々な設定・管理が簡単にできます。

functions.phpは、WordPressサイトには欠かせない存在なのです。

 

まとめ

  • functions.phpは、WordPressサイトの機能や設定を作るファイル。
  • functions.phpは、サイト構築の手間を少なくする。
  • functions.phpにコードを記述して、様々な機能を追加することができる。
Pocket