WordPressプラグインの更新メカニズムの詳細な説明とベストプラクティス
WordPress自体はネイティブプラグインの更新プロセスを提供しておらず、開発者はそれを自分で実装する必要があります。これには、データベースのバージョン番号の更新と、必要に応じて新しいオプションの作成が含まれます。
WordPressプラグインのバージョン番号は、プラグインメインファイルの定数とデータベースのオプションの2つの場所に保存する必要があります。これにより、最後のプラグインの更新以降にデータベースオプションが更新されているかどうかを検出できます。
オプションを更新する場合、開発者はユーザーの選択肢を上書きしないように注意する必要があります。データベースにオプションが存在しない場合は、既に存在する場合は、上書きしないでください。
アレイとして保存されているオプションの場合、開発者はPHP関数を使用して、すべてのキーが定義され、存在しないオプションが導入されていないことを確認できます。これにより、ユーザーが古いオプションを変更すると、その値が保持されます。
array_merge()
数週間前、私はWP写真球(開発したWordPressプラグイン)に関するメールを受け取りました。問題は大きいです。プラグインを更新すると、一部のインストーラーがクラッシュします。いくつかの調査の後、問題はプラグインで使用されるオプションに起因することがわかりました。これらのインストーラーは、追加した新しいオプションのデフォルト値を提供しません。
これがこのチュートリアルを書きたい理由です。まず、更新プロセスが必要な理由と、WordPressがそのようなプロセスを提供しない理由を正確に理解します。次に、オプションを更新するために独自のプロセスを適切に作成する方法を示します。
プラグインの更新プロセスの重要性
通常、ファイルを変更するだけでは何かを正しく更新するには不十分です。たとえば、WordPressファイルを新しいバージョンに手動で更新すると、プラットフォームはボタンをクリックしてデータベースを更新するように要求します。
プラグインでオプションを使用しているとします。プラグインが進化するにつれて、新しいバージョンではさらに多くのオプションが必要になります。ユーザーが最初にプラグインをアクティブにするときに新しいオプションを作成するのは簡単です。アクティベーションフックを使用するだけです。
たとえば、次のコードを見てみましょう
の代わりにfunction my_awesome_plugin_activation() { update_option('my_awesome_plugin_option', 'default value'); } register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
update_option()
新しいオプションが必要な場合、または新しいバージョンで既存のオプションの値を更新する場合は、プラグインを既に使用しているユーザーデータベースを更新する必要があるため、更新後すぐに呼び出される関数が必要です。 。 add_option()
より正確には、以前はそうでしたが、WordPressはバージョン3.1でこの動作を停止しました。開発チームはこのオプションを説明し、Make WordPress Coreブログの完全な説明を読むことができます。主な理由は、ユーザーがプラグインを手動で更新する場合、アクティベーションフックをスキップできるため、毎回呼び出されないことです。
したがって、
WordPressは、プラグインの更新後に自動的に関数を呼び出すデフォルトメソッドを提供しません。そのため、独自のプロセスを構築する必要があります。更新プロセスを処理する方法
このチュートリアルのこの部分では、プラグインが更新された後に特定の関数を自動的に呼び出す方法を示します。次のセクションでは、既存のオプションの更新と新しいオプションの作成を適切に処理する方法(同じ機能)を確認します。
この方法の原則
データベース内の番号はユーザーの現在インストールされているバージョンを保存しますが、定数の番号は現在のバージョンです。これらの2つの数値が異なる場合、データベースオプションは最後のプラグインの更新以来更新されていないため、これを行う必要があります。
この場合、必要なすべてのオプションを更新する関数を呼び出します。この関数は、データベースに保存されているバージョン番号も更新します。これにより、この関数をオーバーコールしません。
定数
通常、プラグインバージョンはデジタルIDを使用しますが、別のシステムを使用する場合は、自由に使用してください。ここでの唯一の制約は、各バージョンまたは少なくともデータベースを変更する必要がある各バージョン(新しいオプション、新しいデフォルトなど)に一意の識別子を提供することです。
function my_awesome_plugin_activation() { update_option('my_awesome_plugin_option', 'default value'); } register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
function
を確認します
plugins_loaded
if (!defined('MY_AWESOME_PLUGIN_VERSION')) define('MY_AWESOME_PLUGIN_VERSION', '3.4.1');
my_awesome_plugin_activation()
function my_awesome_plugin_check_version() { } add_action('plugins_loaded', 'my_awesome_plugin_check_version');
get_option()
では、なぜアクティベーション関数を呼び出すのですか?明確にするために、更新プロセスに特別に使用される新しい関数を作成できます。ただし、これを行うと、更新オプションは作成オプションの作成と同じである可能性があるため、この新しい関数はアクティベーションに非常に似ていることがわかります。
上記のアクティベーション関数でやりたいことは何でもできます。ただし、1つのことが必要です。つまり、データベースに保存されているバージョン番号を更新することです。このようにして、ページがロードされるたびに関数に電話することはありません。
function my_awesome_plugin_activation() { update_option('my_awesome_plugin_option', 'default value'); } register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
トリックに注意してください:add_option()
は使用しません。実際、オプションがまだ存在していない場合、update_option()
はそれを作成します。それが存在する場合、その値を指定された値に更新します。これが、アクティベーション機能を問題なく更新機能として使用できる理由です。 update_option()
ユーザーの選択を上書きしないでください!
を呼び出すことができます。 update_option()
ただし、オプション値を常に更新したいとは限りません。実際、オプションを使用する場合、通常、ユーザーに設定をパーソナライズさせることです。
上記の上記では、オプションが存在しない場合、update_option()
がfalseを返すことがわかります。この動作を使用して、更新するオプションがデータベースに存在するかどうかをテストします。この場合、私たちは何もしません。それ以外の場合は、このオプションを作成します。
get_option()
このテストは、オーバーライドしたくないオプションに必要であることに注意してください。場合によっては、バージョン番号を考慮して、これをやりたいと思うかもしれませんが、私たちは確かに古い価値を維持したくありません!
if (!defined('MY_AWESOME_PLUGIN_VERSION')) define('MY_AWESOME_PLUGIN_VERSION', '3.4.1');
WordPressを使用すると、配列がオプションの値を保存できることを知っておく必要があります。それらを作成することは、他のオプションを作成すること以外に難しくありません。たとえば、
複数の設定が必要な場合は、配列を使用することをお勧めします。このようにして、データベースで多くのエントリを使用せず、同じ名前のオプションを使用して別のプラグインの可能性を制限します。ただし、更新プロセスを考慮すると、これは問題を引き起こす可能性があります。
function my_awesome_plugin_check_version() { } add_action('plugins_loaded', 'my_awesome_plugin_check_version');
データベースにオプションが存在する場合、前のコードは作成されないため、新しいキーは存在しません。ただし、条件を削除すると、新しいアップデートのたびに配列がデフォルト値を取得します。理想的ではありません。幸いなことに、解決策があります!
最初に、オプションのデフォルト値を含む配列を定義します(新しいキーが存在する場合)。
次に、現在データベースに保存されている配列を取得します。
function my_awesome_plugin_activation() { update_option('my_awesome_plugin_option', 'default value'); } register_activation_hook(__FILE__, 'my_awesome_plugin_activation');
PHP関数を使用して、デフォルト配列を最初のパラメーターとして、ユーザーの配列を2番目のパラメーターとして使用できます。このようにして、array_merge()
配列で定義されているすべてのキーを含む配列を取得し、存在しないオプションはありません。ユーザーが古いオプションの1つを変更すると、その値は保持されます。 $default
では、常に最新の定義を維持します。 array_merge()
if (!defined('MY_AWESOME_PLUGIN_VERSION')) define('MY_AWESOME_PLUGIN_VERSION', '3.4.1');
を使用して結果をデータベースに保存します。 update_option()
function my_awesome_plugin_check_version() { } add_action('plugins_loaded', 'my_awesome_plugin_check_version');
この関数は、プラグインがアクティブ化されたときに呼び出されます。これが私たちが望むものです。ただし、この場合、オプションはまだ存在していないため、
はfalseを返します。問題は、get_option()
のパラメーターとしてfalseを使用するとエラーが発生することです。 array_merge()
は空の配列になりたいです。これを行うには、取得するデフォルト値を示す$option
の2番目のパラメーターを使用できます(falseを返さないように)。 get_option()
if (MY_AWESOME_PLUGIN_VERSION !== get_option('my_awesome_plugin_version')) my_awesome_plugin_activation();
注意深く読むと、WordPressプラグインの更新を処理するプロセスは複雑ではありません。ただし、オプションを使用する場合、これは重要です。初期化オプションなしでいくつかの問題がある可能性があるためです。
現在、WordPressはプラグインの更新を処理するネイティブの方法を提供していません。実際、上記の問題を考えると、このタイプの機能がいつか導入されていることがわかった場合、このチュートリアルと同様の方法で実装する必要があります。
ここでサンプルプラグインのコードを取得できます。このコードは、独自のWordPressプラグインの更新プロセスを実装するためのフレームワークと考えてください。フィードバックがある場合は、以下のコメントでお知らせください。
WordPressプラグインアップデートFAQ(FAQ)
WordPressプラグインを定期的に更新することの重要性は何ですか?
WordPressプラグインの安全な更新を確保する方法は?
プラグインの更新が失敗した場合、最初のステップは、バックアップからWebサイトを復元することです。次に、障害の原因を決定してみてください。これは、別のプラグインまたはテーマとの競合、またはWordPressのバージョンとの互換性の問題が原因である可能性があります。問題を特定したら、自分で修正するか、プラグイン開発者に連絡して助けを借りてください。
WordPressには、プラグインを自動的に更新できる組み込み機能があります。この機能を有効にして、WordPressダッシュボードのプラグインセクションに移動し、自動的に更新するプラグインを選択し、クリックして自動更新を有効にすることができます。
はい、プラグインの更新がウェブサイトに問題を引き起こす場合、プラグインの更新をロールバックできます。 WPロールバックなど、プラグインの以前のバージョンに簡単に復元できるプラグインがいくつかあります。
Advanced WordPressプラグインは、フリープラグインと同様に更新されます。ただし、更新にアクセスするには、有効なライセンスキーが必要です。ライセンスキーを入力した後、WordPressダッシュボードからプラグインを更新できます。
複数のWordPressサイトを管理している場合は、各サイトのプラグインを個別に更新するのに多くの時間を費やす必要がある場合があります。より効率的な方法は、ManageWPやMainWPなどのWordPress管理ツールを使用することです。これにより、1つのダッシュボードからすべてのWebサイトの更新を管理できます。
特定のプラグインの自動更新を無効にする場合は、Easy Updates Managerなどのプラグインを使用できます。このプラグインを使用すると、Webサイト上の各プラグインの自動更新を制御できます。
プラグインを更新する前に、WordPressプラグインディレクトリのプラグインページにアクセスして、WordPressバージョンとの互換性を確認できます。ここでは、WordPressのさまざまなバージョンとのプラグインの互換性に関する情報を見つけることができます。
プラグインの更新がWebサイトを壊す場合、最初のステップはバックアップからWebサイトを復元することです。次に、問題を引き起こしたプラグインを無効にします。 WordPressダッシュボードにアクセスできない場合は、WP-Content/Plugins Directoryのプラグインフォルダーを変更して、FTP経由でプラグインを無効にすることができます。プラグインを無効にした後、プラグイン開発者にトラブルシューティングまたは連絡してヘルプがあります。
以上がWordPressプラグインは正しい方法で更新されますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。