自分のWordPressで学ぶPHP講座(AIの変更を判定する)

区分1 地図★★★

No.02 WordPressのファイルの地図

WordPressのファイルが、サーバーのどこに・何のためにあるかの地図です。AIが「直しました」と言った時に、それが「触ってよい所」か「触ってはいけない所」かを、パスだけで言えるようにします。
目次
  1. 第0章 前提知識
  2. 第1章 サイトの中の地図
  3. 第2章 読み込まれる順
  4. 確認問題

第0章 前提知識

① public_html :サイトの入り口になるフォルダ

サーバー(Xserver)では、ドメインごとにフォルダが分かれていて、その中の public_html がサイトの公開フォルダです。 ブラウザからのリクエストは、このフォルダの中を探しに行きます。

この講座では、パスを public_html/wp-content/… のように、public_html から先だけで書きます。

② テーマ :サイトの見た目と動きの土台

テーマは、サイト全体のデザインと、ページの組み立て方を持った部品です。 同じ投稿でも、テーマを替えれば見た目が変わります。

③ プラグイン :機能を足す部品

プラグインは、問い合わせフォームやキャッシュのように、機能を足す部品です。 テーマとは独立していて、テーマを替えても残ります。

④ 親テーマと子テーマ

事務所にたとえると、親テーマは「会社の標準フォーマット」、子テーマは「自分の部署だけの追記メモ」です。 標準フォーマットが更新されても、追記メモは消えません。

第1章 サイトの中の地図

① 大きな3つの置き場 必ず覚える

public_html の中は、WordPress本体が置いた物と、自分の物がはっきり分かれています。

public_html/
├ index.php         入口。ここからWordPressが始まる
├ wp-config.php     サイトの設定(データベースの接続情報など)
├ wp-settings.php   WordPress本体の起動手順
├ wp-admin/         管理画面(WordPress本体)
├ wp-includes/      WordPressの部品(本体)
├ wp-content/       自分の物が入る場所
│  ├ themes/        テーマ
│  ├ plugins/       プラグイン
│  └ uploads/       アップロードした画像
└ .user.ini         PHPの設定

wp-admin・wp-includes は、WordPress本体です。ここを直すというAIの提案は、原則として止めます。 本体は更新で上書きされ、直した内容が消えるからです。

自分の物は、wp-content の中にあります。

② wp-config.php :サイトの土台の設定 必ず覚える

wp-config.php は、サイトがデータベースにつながるための情報などが入ったファイルです。 中は、大きく次の形で並んでいます。値は、この講座では載せません。

define( 'DB_NAME', '(データベース名)' );
define( 'DB_USER', '(ユーザー名)' );
define( 'DB_PASSWORD', '(パスワード)' );
define( 'DB_HOST', '(接続先)' );
define( 'AUTH_KEY', '(長いランダムな文字列)' );
// …鍵が計8個…
$table_prefix = 'wp_';
define( 'WP_DEBUG', false );
require_once ABSPATH . 'wp-settings.php';

上の方がデータベースと鍵、真ん中がテーブルの名前の頭文字とデバッグ(不具合を探す)の切り替え、一番下で wp-settings.php を読み込んで、WordPressを起動しています。

このファイルのパスワードと鍵は、漏れると他人がサイトに入り込める値です。 AIに作業を頼む時も、このファイルの中身を会話に貼らせないでください。AIの出力にこれらの値が出てきた時も、そのまま貼って共有しないでください。

③ テーマのフォルダ 必ず覚える

public_html/wp-content/themes/ には、テーマが1つずつフォルダで入っています。 親テーマと子テーマは、並んで置かれています。

themes/
├ lightning/            親テーマ(配布物)
├ 子テーマ名/            子テーマ(自分の変更を置く)
└ twentytwentyfive/     標準で付いてくるテーマ

フォルダがあるだけでは、使っているとは限りません。 どれが有効かは、管理画面の「外観 → テーマ」で確かめます。

子テーマは、最低2つのファイルでできます。

style.css の先頭は、こうなっています。

/*
Theme Name: Lightning Child Sample
Template: lightning
Version: 0.6.0
*/

Template: lightning の行が、「親は lightning」という宣言です。 この行が親のフォルダ名と一致していないと、子テーマは正しく動きません。

④ functions.php :読み込まれて、機能を足すファイル 必ず覚える

functions.php は、サイトが起動する時にPHPに読み込まれる、テーマのファイルです。 画面の見た目を直接書く所ではなく、WordPressに「この場面でこれをしてね」と登録したり、独自の部品を足したりする所です。

プラグインとの違いは、テーマに属していることです。 テーマを替えると、そのテーマの functions.php の内容は動かなくなります。

⑤ plugins と .user.ini

public_html/wp-content/plugins/ には、プラグインがフォルダ単位で入っています。 AIが「プラグインのファイルを直しました」と言った時は、更新で消えないか、誰が管理している物かを聞きます。

.user.ini は、public_html の直下に置く、PHPの設定ファイルです。 ファイル名が . で始まるので、普通の一覧では見えないことがあります。 中の値の見方は、No.09(後で出ます)で扱います。

第2章 読み込まれる順

① 起動の順番 必ず覚える

サイトを開いた時、WordPressは次の順で動きます。

1. PHPが起動する時に、.user.ini の設定が読まれる
2. index.php(入口)
3. wp-config.php(設定)
4. wp-settings.php(WordPress本体の起動)
5. 有効なプラグイン
6. 子テーマの functions.php
7. 親テーマの functions.php
8. 画面の組み立て(テーマのテンプレート)

公式の説明では、子テーマの functions.php は親の functions.php を置き換えず、親の直前に追加で読み込まれます。 つまり、子テーマの方が先に動きます。

なお、プラグインはテーマより先に読み込まれます。 そのため、プラグインと同じ名前の関数を functions.php に書くと、衝突してサイトが止まることがあります。

② パスで判定する 必ず覚える

AIが「functions.php を直しました」と言ったら、次の3つを聞けば、まず十分です。

親テーマや wp-includes の中なら、原則として止めます。 子テーマの functions.php なら、中身の判定に進みます。

○ よくある勘違い:「子テーマの functions.php は、親の functions.php を上書きする」→ ×。両方読まれます。上書きされるのは style.css やテンプレートファイルの方です
○ サイトごとにテーマの種類は違いますが、地図の形は同じです
○ 関係する単元:No.01(PHPが動く順番)/No.05(functions.php の中身)

自分の物は wp-content の中。wp-admin・wp-includes・親テーマは触らない。functions.php は子テーマにあり、親より先に読まれる。wp-config.php の中身は貼らない。

確認問題

問1 AIが「テーマの functions.php を直しました」と言ってきました。まず確かめるべきことは?

問2 子テーマの style.css に「Template: lightning」と書いてあります。この行の意味は?

問3 サイトを開いた時に読み込まれる順で、正しいのはどれですか?

出典:WordPress 開発者ドキュメント「Child Themes」(https://developer.wordpress.org/themes/advanced-topics/child-themes/)/「Main Stylesheet (style.css)」(https://developer.wordpress.org/themes/basics/main-stylesheet-style-css/)/「Theme Functions」(https://developer.wordpress.org/themes/basics/theme-functions/)/「Editing wp-config.php」(https://developer.wordpress.org/advanced-administration/wordpress/wp-config/)/あなたのサーバーの wp-settings.php・子テーマ内 style.css(値は伏せています)。