できるだけ早くBetter WP-Config の使用を開始したいですか?
define()
改良により、WordPressコアに必要なすべての定数が利用できるようになりました。.php
関連配列、 .env
ファイル、またはJSON
ファイルを使用して構成します。db
、 debug
、 error
、 salts
などの領域ごとに編成されています。define()
とini_set()
などを知る必要はありません。define()
定数を指定できます。private
ディレクトリを使用して構成を保存するABSPATH
(例: WP コア)を Web ルート、 /wp
、またはその他のサブディレクトリに設定します。WP_CONTENT_DIR
/wp-content
、 /app
またはその他のサブディレクトリに設定しますlocal
、 test
、 stage
、 prod
など。HTTP_HOST
ドメインにマッピングするsecrets
を除く)index.php
またはwp-config.php
に対するビルド変更を必要とせずにデプロイします。$_ENV
、 $_SERVER
、またはgetenv()
からロードしますprivate
ディレクトリ内wp_config()->print_config();
(注: この問題が完了するまでは、次の内容は当てはまりません。それまでは、クイック スタートを参照してください)
/wp-content/config/config.php
という名前のファイルを作成し、次の形式を使用してサイトの構成を追加するだけです。
<?php
return array(
'db[name]' => 'example_db',
'db[user]' => 'example_user',
'db[pass]' => '1234567890abcdef',
'db[charset]' => 'utf8mb4_unicode_ci',
'db[collate]' => 'utf8mb4',
'db[host]' => 'localhost',
'db[table_prefix]' => 'wp_',
'defines' => array(
'CONSTANT_REQUIRED_BY_A_PLUGIN' => 'it's value'
),
);
また、サイトの/index.php
と/wp-config.php
、それぞれこことここで見つけられる非常に簡単な代替案に置き換える必要があります。
ただし、間違った仮定を立てる前に、次のことを行ってください。
より優れた WP-Config では、 ../config
、 /private/config
、または好きな場所から設定ファイルをロードできます。
構成とコードを分離したい場合は、 file_format
'env'
に設定できます。
シンプルに見えるかもしれませんが、これは簡単に始められるように意図したものですが、Better WP-Config は非常に複雑な構成要件を処理できるように設計されています。使い始めて、複数の環境や自動展開などのより複雑なユースケースに遭遇すると、Better WP-Config がいかに柔軟で強力であるかがわかります。
Better WP-Config がどのような問題を解決しようとしているのか疑問に思われるかもしれません。 「なぜより優れた WordPress 構成ソリューションが必要なのでしょうか?」と疑問に思うかもしれません。そうですね、これが必要なのは、些細な問題を超えたユースケースが多すぎるため、より優れた構成ソリューションが必要であることがわかったからです。続きを読む:
WordPress は優れた CMS ですが、 test
/ stage
/ live
環境など、よりプロフェッショナルなワークフローを使用したい WordPress 開発者のニーズを無視しています。デフォルトの WordPress 構成は、1 つの環境の構成を管理するように設計されています。さらに管理したい場合は、独自のマルチ環境構成ソリューションを導入する必要があります。
WordPress では、Web ルートまたは 1 つ上のディレクトリ レベルにあるwp-config.php
に設定を保存できます。構成を別のファイルに保存してからwp-config.php
でrequire()
こともできますが(これがBetter WP-Configの機能です)、カスタム ソリューションをハックすると、それを文書化して保守する必要もあります。今後も頼りたいと思います。
そして、Better WP-Config などのソリューションを開発して文書化するのに苦労した場合、基本的には、開発や文書化の努力をせずに使用できたものを複製することに時間(とお金?)を投資することになります。
さらに侮辱的なことに、Pantheon や WPEngine などの WordPress 管理対象ホストはそれぞれ、独自の管理対象 WordPress サービスをサポートするために、互換性のない独自の構成ソリューションを導入しています。
ここでは、さまざまな WordPress 管理ウェブホストがwp-config.php
をどのように処理および/または制限するかを説明します。
他の管理されている WordPress Web サイトがwp-config.php
どのように処理するかに精通している場合は、私たちや他の人を助けるために、その Web サイトがどのように wp wp-config.php
処理するかについてのドキュメントを添えてプルリクエストを送信することを検討してください。
WordPress を使用したことがある人なら誰でも、PHP 定数DB_HOST
、 DB_NAME
、 DB_USER
およびDB_PASSWORD
を使用して WordPress のデータベース資格情報を構成することを知っています。これは、最初に WordPress を使い始めたときはシンプルで簡単に思えますが、時間が経つにつれて、WordPress のデフォルト、プロジェクトのデフォルトから環境の詳細、そして最終的に Web ホストの設定まで構成をカスケードすることができないため、構成が非常に柔軟性に欠けることに気づきます。
より良い WPConfig では、不変定数の使用が排除されず、代わりに、すべてのカスケード構成がマージされるまで待ってから、これらの定数をdefine()
します。 (ただし、これは PHP のdefine()
d 定数の使用を WordPress から根絶するための第一歩になる可能性があります。PHP の不変定数により、WordPress 機能の自動テストが必要以上に難しくなるため、これは考えものです。)
残念ながら、WordPress コアで利用可能なすべてのオプションを簡単に見つける方法はありません。これらのオプションは、WordPress のコードベース全体とオンラインのさまざまな文書化された場所に暗示されているためです。より良い WP-Config は、 phpinfo()
と同様に、 "wp_config()->print_config()
でこの問題を(ほとんど)解決します。
ローカル開発に必要な学習を追加するデータベース構成など、多くの構成オプションにはデフォルトがありません。より良い WP-Config は、すべての「既知の」オプションに対してデフォルトのオプションを提供します。
それ自体で、プロジェクトが必要とするすべてのさまざまな環境の構成をバージョン管理できるようにするための一連の実行可能な規則を思いつくことができます。私たちはそれを実現しました。しかし、その後、Web ホストごとにそれを異なる方法で処理し、試してみることに気づきます。 、あなたやあなたのクライアントが選択したさまざまな Web ホストで動作する、チームが使用できる 1 つの一貫したソリューションを見つけるのは不可能だと感じています。
これが難しい理由をよりよく理解するには、Pantheon と WPEngine がそれぞれのwp-config.php
ファイルをどのように処理するかについて必ず読んでください。
最後に、単にwp-config.php
が標準化されていないために、管理対象の WordPress Web ホストによって行われた互換性のない選択によって悪化した、プロフェッショナルなワークフローとバージョン管理のユースケースに関連した問題が、デプロイメントを必要以上に困難にしているだけです。これは、SFTP アップロード、Pantheon などの Git デプロイメント、CircleCI などの継続的統合プロバイダーを介したデプロイメントを使用しているかどうかに当てはまります。
良いニュースは、Better WP-Config がこれらの問題を(ほぼ)すべて解決することです。始めましょう。
WP-Config の優れた効果に本当に満足しています。ただし、次のような状況が考えられます。
ClassicPress フォークと CalmPress フォークが構成に Better WP-Config を採用していれば素晴らしいのですが、
WordPressが管理するウェブホストが自社のサービスに対して Better WP-Config を標準化すればさらに良いでしょう。
何よりも、WordPress 自体が新規インストールに Better WP-Config を使用しながら、すでに何年もの間wp-config.php
使用している既存のサイトに対する継続的なサポートを維持できれば最高です。
GPLv2