tmswp / ja-toolkit
TMStack WordPress Framework - Japanese Toolkit
v0.10.0
2026-10-30 13:00 UTC
Requires
- php: >=8.3
- ext-mbstring: *
- tmswp/core: ^0.10
Requires (Dev)
- tmswp/testing: ^0.10
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-30 13:01:15 UTC
README
日本語サイト固有の課題を解決するオプトインモジュール集です。導入しただけでは何も起きません。テーマ・プラグインのルートのtmswp-kernel.phpで、KernelConfigのextensionsにJaToolkitを渡したKernelでだけ、コンストラクタに渡したモジュールが有効になります。
動作環境
- PHP 8.3〜8.5(
ext-mbstring。composer.jsonのrequire)、WordPress 7.0以上 - tmswp/core
^0.10(composer.jsonのrequire)
導入
composer require tmswp/ja-toolkitを実行します。- テーマ・プラグインのルートの
tmswp-kernel.phpで、extensionsにnew JaToolkit(...)を渡し、使うモジュールだけをコンストラクタに並べます(下の「利用例」)。
モジュール一覧
| モジュール | 効果 |
|---|---|
JapaneseSlug |
日本語のタイトル等から作られたURLエンコードのスラッグを、{post_type}-{post_id}の形式(変えられる)に置き換える。対象は許可リストの投稿タイプだけで(既定は公開の投稿タイプのうちattachment以外)、置き換えたスラッグの一意性をWordPressで確かめ直す |
FullwidthSearchNormalizer |
検索クエリの全角スペースを半角へ正規化し、連続スペースを1つにまとめる。スペースだけの検索は0件にする |
DisableTexturize |
和文で不要な英文の記号の変換(wptexturize)を、run_wptexturizeのフィルタでサイト全体で止める |
利用例
// tmswp-kernel.php use TMSWP\Core\Kernel\KernelConfig; use TMSWP\JaToolkit\JaToolkit; use TMSWP\JaToolkit\Module\DisableTexturize; use TMSWP\JaToolkit\Module\FullwidthSearchNormalizer; use TMSWP\JaToolkit\Module\JapaneseSlug; return KernelConfig::theme( __DIR__ . '/app', 'App', extensions: [ new JaToolkit( new JapaneseSlug(), new FullwidthSearchNormalizer(), new DisableTexturize(), ), ], );
- モジュールはインスタンスで渡します。同じクラスのモジュールを2つ渡すと、Kernelのbootが
LogicExceptionになり、何も登録されません。 - 1つの
JaToolkitのインスタンスは、1つのKernelにだけ登録できます(2つ目はLogicException)。テーマとプラグインの両方で使う場合は、それぞれのtmswp-kernel.phpでnew JaToolkit(...)を作ります。 JapaneseSlugの形式と対象の投稿タイプは、コンストラクタで変えられます(例:new JapaneseSlug('{post_type}-{post_id}', ['post', 'news']))。形式は{post_id}を含み、ほかは{post_type}と英小文字・数字・_・-だけです。{post_type}を20文字、{post_id}を20桁として数えた長さが200(post_nameの列の上限)を超える形式は、LogicExceptionになります。
Formのプリセット
カナの入力の項目はTMSWP\JaToolkit\Form\KanaTextFieldが作ります。WordPressのフックを登録しない静的なファクトリです。
use TMSWP\Core\Form\FormDefinition; use TMSWP\Core\Form\Rule\Required; use TMSWP\JaToolkit\Form\KanaTextField; use TMSWP\JaToolkit\Form\KanaType; FormDefinition::create('contact') ->add(KanaTextField::create('kana', 'フリガナ', KanaType::Katakana, [new Required()], maxLength: 50));
- 違反のメッセージの日本語訳は、
JaToolkitをKernelConfigのextensionsに登録したときに読み込まれます。モジュールを使わずKanaTextFieldだけを使う場合も、モジュールを渡さないnew JaToolkit()を登録してください。登録しない場合、訳は保証しません。 - メッセージは検証の時点で訳すため、フォームの定義を
initより前に作っても訳が出ます。 KanaType::Katakanaは、半角カタカナ・ひらがな・全角スペースを全角カタカナ・半角スペースに正規化し、全角カタカナ・長音符・中黒・半角スペースだけを通します。KanaType::Hiraganaは、半角カタカナ・カタカナ(ヴを含む)・全角スペースをひらがな・半角スペースに正規化し、ひらがな(ゔを含む)・長音符・中黒・半角スペースだけを通します。- 漢字・英数字と、値の途中の改行・タブは、どちらも通しません(前後の空白・改行・タブは除去されます)。
管理画面やwp_headの整理について
管理メニュー・管理バー・ダッシュボード・wp_headの出力などの整理は、消す対象がテーマごとに違うため、このパッケージでは提供しません。app側のHookクラスで実装してください(レシピ: vendor/tmswp/core/rules/hooks.md)。
レシピ
- 各モジュールの有効化と設定・JapaneseSlugの形式の規則・KanaTextField:
vendor/tmswp/ja-toolkit/rules/ja-toolkit.md - 拡張の登録の仕方:
vendor/tmswp/core/rules/extensions.md
設計の正本は、TMSWPのmonorepo(tmstack-io/tmswp)のdocs/08-extensions.mdの「tmswp/ja-toolkit — 日本語サイト対応」の節です。
ライセンス
GPL-2.0-or-later(LICENSE)