WordPressではブロック形式のエディターの進化に伴って、ページレイアウト(ページテンプレート)もサイトエディターと呼ばれる管理画面から自身で自由に編集できるブロックテーマがデフォルトテーマになり、WordPressはブロック形式での編集が基本という方向性が明確になってきました。

従来のクラシックテーマでは、親テーマの更新によって、自身でカスタマイズした部分が消失しないよう、子テーマを使う機会が多く、子テーマは、もちろんブロックテーマでも作成・使用できるようになっています。

当サイトでも誰かの役に立てばと以下の子テーマを無料で配布しています。

私も、従前の知識に従って、Twenty Twenty-TwoやTwenty Twenty-Threeテーマでも子テーマを使用してきましたが、PHPで書かれたテンプレートを子テーマにコピーして上書きするということがブロックテーマでは皆無になり、プラグインからカスタムコードを追加した方が汎用性が高いのでは?と考えるようになりました。

そこで作成したのが、このページで紹介している「HA Alt Childtheme 」です。

「HA Alt Childtheme 」には以下の機能が実装されています(赤文字は子テーマでよく使われるファイル名)。

  • 独自のスタイルコードを追加する機能(style.css
    ※できるだけbodyタグ直前に出力するようにしています
  • 管理画面のみに適用する独自のスタイルコードを追加する機能(admin-style.css
  • カスタムプログラムコードの追加する機能(functions.php
  • カスタムスクリプトコードの追加する機能(custom-script.js
    ※コードに誤りがなければjqueryも問題なく動作するようにしています

「theme.json」ファイルの上書き機能を使用したい場合には、子テーマを使用する以外に方法はありませんが、以下のページを参考にしてコードを書くことで特定の情報に対する上書きはできます。

【参考:「WordPress 6.1 で追加された開発者向け機能紹介」】

なお、このプラグインを制作・配布するにあたり、以下のページで子テーマにするかプラグインにするかの判断についての考察を書いていますので、併せてご覧ください。

「HA Alt Childtheme 」のダウンロードと有効化

本プラグインはWordPressの公式リポジトリ(公式サイト)では配布していない、いわゆる野良プラグインですので、本ページからのみダウンロードできます。

また、公式のプラグインのように更新情報も配信していませんので、更新の有無は本サイトを定期的に確認いただく必要があります。

現時点で、将来的にも更新に必要と思われるコードや関数は使用していませんので、恐らく更新することはないと思います

ダウンロードしたら、プラグインの追加画面から、アップロードインストールを行い、有効化してください。

最新バージョン 2.0 (2023年8月31日リリース)

ダウンロードされた時点で「利用規約」および「プライバシーの保護および利用規約」に同意いただいたものとします

4 ダウンロード

「HA Alt Childtheme 」の使用方法

冒頭で紹介した通り、子テーマの機能をプラグイン化したものですので、基本的に子テーマに行うカスタマイズと同じです。

テーマとプラグインで、使える関数等の相違がありますので、詳しくは後述の子テーマとプラグインで記述の異なる部分(例)や注意事項を確認ください

ファイル名用途・詳細
custom-style.cssスタイルコードを記述します
閲覧画面・ブロックエディター両方に反映されます
ヘッダーのできる限り最後に反映されるようにしています
custom-admin-style.css管理画面のみに適用するスタイルコードを記述します
custom-functions.phpカスタムプログラムを記述します
記述方法は子テーマのfunctions.phpと同じです
custom-script.jsカスタムスクリプトを記述します
閲覧画面・ブロックエディター両方に反映されます

子テーマとプラグインで記述の異なる部分(例)や注意事項

プラグインで使用できないWordPress関数

関数名理由など
get_template_part()PHPで書かれたテンプレートを呼び出す関数です
テーマのみで適用可能ですので、プラグインでは使用できません(無視されます)
get_stylesheet_directory_uri()
get_template_directory_uri()
get_theme_file_uri()
いずれもテーマ内のファイルを呼び出す関数で、プラグインでは無視されます
(次項のファイル読み込み方法等を参照ください)

ファイルの呼び出し方法、PHP関数

関数名理由など
require
require_once
テーマ内で別のプログラムファイルを読み込む際には「include」を使用しますが、プラグインでは「require」ではこれらを使用します
plugin_dir_url( FILE )「get_stylesheet_directory_uri()」などの代替として、プラグインのルートフォルダを参照します(子ファイルや子フォルダ前の「/」は必要ありません)
__dir__現在のファイル位置を参照します
(子テーマと同様、子ファイルや子フォルダ前に「/」が必要です)

子テーマのfunctions.phpの内容を転記するときは

WordPressでは同一サイト内で、同一のユーザー定義関数を使用することができません。

子テーマのfunctions.phpへ追加していたプログラムコードを本プラグインのcustom-functions.phpへ転記する際には以下のいずれかの方法で行ってください。

方法1
  1. 子テーマのfunctions.phpに書かれていた内容を一旦メモ帳などに書き出す
  2. 子テーマのfunctions.phpを保存する
  3. 1をプラグインのcustom-functions.phpへ追加
  4. プラグインでは使用できない関数等を修正
  5. プラグインのcustom-functions.phpを保存
方法2
  1. 子テーマのfunctions.phpに書かれているプログラム1つ1つに重複チェックコードを入れる(後述)
  2. 重複チェックを入れたプログラムをプラグイン側へコピーする
  3. 子テーマからプラグイン側へコピー済のプログラムを削除
  4. 子テーマの保存、プラグインの保存

重複チェックコードは以下のようなものをいいます(関数名は実際のユーザー定義関数名に変更ください)

if ( !function_exists( 'ユーザー定義関数名' ) ){
function ユーザー定義関数名(){
---プログラムの内容---
}
}

「HA Alt Childtheme 」利用規約

「HA Alt Childtheme 」(以下「本プラグイン」)の利用規約です。

本規約は現在に定めたもので、予告なく変更することがあります。

プラグインの動作環境

本プラグインは現在、以下の環境でのみ動作チェックを行っています。環境が異なる場合には、正常に動作しなかったり、エラーが出たりすることがあります。

本プラグインの有効化や使用中にエラーが発生し、サイトの動作停止などの不具合が起こっても、当方では一切責任を負いませんので、了承の上使用ください

項目環境
サーバーカラフルボックス Box2プラン
PHPバージョンPHP 7.4 および 8.0
WordPressバージョン6.3.1
テーマTwenty Twenty-Two および Twenty Twenty-Three
プラグインこちらを参照ください

プラグインの更新等について

ページ内で説明した通り、本プラグインはWordPressの公式サイトで配布されているプラグインではありません。

プログラムソースは特にセキュリティ上で懸念のあるものは存在しませんし、懸念のある機能もありませんが、不安な場合には使用をお控えください。

本プラグインの更新は、当サイト内の投稿にてお知らせします。プラグインの一覧等で自動通知されませんのでご注意ください。

本プラグインは、私が単独(個人)で作成・メンテナンスを行っています。本プラグインの制作者である私に万が一のことがあった場合、または、本プラグインに致命的な欠陥が見つかり、修正が困難となった場合などには、予告なく配布・更新の停止をすることがあります。

本プラグインのインストール、有効化、使用時に起こった貴サイトでの不具合や不都合に関しては補償等一切いたしません。

再配布や再販について

本プラグインの全ファイルは、GPL(GNU General Public License)が適用されますので、コードの改変や部分的な使用等を制限することはありませんが、再配布や販売等をする場合には以下を遵守いただく必要があります。

  • プラグイン名、作者、不具合発生時の連絡先等の情報は必ず自身のものへ変更すること
  • コード中のユーザー定義関数名、変数名等は必ず自身のものへ変更すること
  • 再配布・販売をしたプラグインについては、一切の責任を配布・販売者本人が負うこと

本プラグインは、私自身が管理を行うサイト向けに作成したプラグインを配布しているものです。したがって、機能のリクエスト、改善提案、不具合対応の連絡は原則受け付けておりません。