テーマ 基礎知識

#0021 - WordPressカスタマイズの最重要ファイル functions.php

今回は、WordPressカスタマイズでもっとも重要なファイル functions.php について紹介します。

functions.php とは

WordPress をカスタイマイズするうえで functions.php は、もっとも重要なファイルです。

WordPressでな、すべての処理において functions.php に記載されたプログラムを実行します。
ウェブサイトを表示するときも、管理画面で編集するときも、どんな状況でも functions.php に書かれた処理が実行されます。

したがって、「独自の関数を作りたい」「管理画面の見た目をカスタイマイズしたい」など、WordPress に対して独自の処理を行いたい場合は、その処理を functions.php に記述します。

functions.php の場所

functions.php は style.cssと同じ場所に作成します。

  • wp-admin

    ここにはWordPressの管理画面に関するファイルが保存されています。このフォルダ内のファイルは変更・削除しないでください。

  • wp-content
    • languages

      多言語対応時に翻訳情報が保存されたフォルダ。このフォルダ内のファイルは変更・削除しないでください。

    • plugins

      インストール済プラグインが保存されたフォルダ。このフォルダ内のファイルは変更・削除しないでください。

    • themes
      • twentytwentyfour

        「Twenty Twenty-Four」テーマが保存されたフォルダ

      • twentytwentythree

        「Twenty Twenty-Three」テーマが保存されたフォルダ

      • mytheme
        • functions.php
        • index.php
        • style.css
    • upgrade

      WordPressのアップデート情報が保存されたフォルダ。このフォルダ内のファイルは変更・削除しないでください。

    • uploads

      管理画面からアップロードしたメディア(画像・動画など)が保存されたフォルダ。このフォルダ内のファイルは変更・削除しないでください。

  • wp-admin

    ここにはWordPressのシステムファイルが保存されています。このフォルダ内のファイルは変更・削除しないでください。

functions.php の使い方

#0020 - ウェブページのタイトルを共通化しよう で紹介した、titleタグの出力を例に functions.php の使い方を紹介します。

おさらい

トップページおよび固定ページの階層に応じて titleタグの出力を切り替える処理を header.php にしました。

<!DOCTYPE html>
<html>
<head>
<?php
if (is_front_page()){
    // トップページだったら
    $title = get_bloginfo('name');
} else {
    $title = get_the_title(); // 今表示しているページのタイトルを取得
    $current_id = get_the_ID(); // 今表示しているページのページIDを取得
    $ancestors = get_post_ancestors($current_id); // 今表示しているページの親ページを取得
    if(!empty($ancestors)){ // 親ページがあるか判定
        foreach ($ancestors as $ancestor) { // 親ページの個数分繰り返す
            $title = $title . '|' . get_the_title($ancestor); // 親ページのタイトルを付け加える
        }        
    }
    $title = $title . '|' . get_bloginfo('name'); // サイト名を付け加える
}
?>
	<title><?php echo $title;?></title>
	<link rel="stylesheet" type="text/css" href="<?php echo get_template_directory_uri();?>'/style.css'">
</head>

5~20行目によって、やっとtitleタグが出力されます。

header.php は本来、共通のヘッダーを出力するファイルです。
タイトルを取得する処理を functions.php に任せて、header.php では取得したタイトルを表示するだけにした方がスッキリします。

functions.php でタイトルを取得する

タイトルを取得する処理を functions.php に移します。

<?php
// タイトルを取得する関数
function get_my_title(){
	if (is_front_page()){
	    // トップページだったら
	    $title = get_bloginfo('name');
	} else {
	    $title = get_the_title(); // 今表示しているページのタイトルを取得
	    $current_id = get_the_ID(); // 今表示しているページのページIDを取得
	    $ancestors = get_post_ancestors($current_id); // 今表示しているページの親ページを取得
	    if(!empty($ancestors)){ // 親ページがあるか判定
	        foreach ($ancestors as $ancestor) { // 親ページの個数分繰り返す
	            $title = $title . '|' . get_the_title($ancestor); // 親ページのタイトルを付け加える
	        }        
	    }
	    $title = $title . '|' . get_bloginfo('name'); // サイト名を付け加える
	}
	return $title;
}
?>

3行目の function で、タイトルを取得する get_my_title関数を宣言します。
4~17行目は、header.php に記載した内容と同じです。
18行目の return で取得したタイトルを戻します。

この get_my_title関数を header.php から呼び出すには

<!DOCTYPE html>
<html>
<head>
	<title><?php echo get_my_title();?></title>
	<link rel="stylesheet" type="text/css" href="<?php echo get_template_directory_uri();?>'/style.css'">
</head>

とします。

4行目で、get_my_title関数を呼び出し get_my_title関数から戻ってきた値を echo関数で出力しています。

いかがでしょうか?
header.php がスッキリしました。

まとめ

今回は、functions.php の使い方を、独自関数の作り方を例に紹介しました。
functions.php には様々な使い方がありますので、今後紹介していきます。

  • この記事を書いた人

UOCN

IT業界29年の現役フリーランスエンジニア。 一部上場企業の大規模システムから個人商店のウェブサイトまで50を超えるプロジェクトに参画。 近年は、WordPressを採用したウェブサイト製作を中心に活動中。

-テーマ, 基礎知識
-