自分のWordPressで学ぶPHP講座(AIの変更を判定する)
区分1 地図★★★サーバー(Xserver)では、ドメインごとにフォルダが分かれていて、その中の public_html がサイトの公開フォルダです。
ブラウザからのリクエストは、このフォルダの中を探しに行きます。
この講座では、パスを public_html/wp-content/… のように、public_html から先だけで書きます。
テーマは、サイト全体のデザインと、ページの組み立て方を持った部品です。 同じ投稿でも、テーマを替えれば見た目が変わります。
プラグインは、問い合わせフォームやキャッシュのように、機能を足す部品です。 テーマとは独立していて、テーマを替えても残ります。
事務所にたとえると、親テーマは「会社の標準フォーマット」、子テーマは「自分の部署だけの追記メモ」です。 標準フォーマットが更新されても、追記メモは消えません。
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 は、サイトがデータベースにつながるための情報などが入ったファイルです。 中は、大きく次の形で並んでいます。値は、この講座では載せません。
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 は、サイトが起動する時にPHPに読み込まれる、テーマのファイルです。 画面の見た目を直接書く所ではなく、WordPressに「この場面でこれをしてね」と登録したり、独自の部品を足したりする所です。
プラグインとの違いは、テーマに属していることです。 テーマを替えると、そのテーマの functions.php の内容は動かなくなります。
public_html/wp-content/plugins/ には、プラグインがフォルダ単位で入っています。
AIが「プラグインのファイルを直しました」と言った時は、更新で消えないか、誰が管理している物かを聞きます。
.user.ini は、public_html の直下に置く、PHPの設定ファイルです。
ファイル名が . で始まるので、普通の一覧では見えないことがあります。
中の値の見方は、No.09(後で出ます)で扱います。
サイトを開いた時、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(値は伏せています)。