ホームページ > CMS チュートリアル > &#&プレス > WordPressプラグインは正しい方法で更新されます

WordPressプラグインは正しい方法で更新されます

Jennifer Aniston
リリース: 2025-02-15 12:56:11
オリジナル
925 人が閲覧しました

WordPressプラグインの更新メカニズムの詳細な説明とベストプラクティス

WordPress自体はネイティブプラグインの更新プロセスを提供しておらず、開発者はそれを自分で実装する必要があります。これには、データベースのバージョン番号の更新と、必要に応じて新しいオプションの作成が含まれます。

WordPressプラグインのバージョン番号は、プラグインメインファイルの定数とデータベースのオプションの2つの場所に保存する必要があります。これにより、最後のプラグインの更新以降にデータベースオプションが更新されているかどうかを検出できます。

オプションを更新する場合、開発者はユーザーの選択肢を上書きしないように注意する必要があります。データベースにオプションが存在しない場合は、既に存在する場合は、上書きしないでください。

アレイとして保存されているオプションの場合、開発者はPHP関数を使用して、すべてのキーが定義され、存在しないオプションが導入されていないことを確認できます。これにより、ユーザーが古いオプションを変更すると、その値が保持されます。

array_merge()数週間前、私はWP写真球(開発したWordPressプラグイン)に関するメールを受け取りました。問題は大きいです。プラグインを更新すると、一部のインストーラーがクラッシュします。いくつかの調査の後、問題はプラグインで使用されるオプションに起因することがわかりました。これらのインストーラーは、追加した新しいオプションのデフォルト値を提供しません。

これらの値は非常に重要であるため、デフォルト値を作成する方法が必要です。ただし、私が考えていることとは反対に、WordPressは更新プロセスを処理するためのネイティブの方法を提供しません。

WordPress Plugin Updates the Right Way これがこのチュートリアルを書きたい理由です。まず、更新プロセスが必要な理由と、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つの場所に保存することです。プラグインメインファイルの定数とデータベースのオプションです。

データベース内の番号はユーザーの現在インストールされているバージョンを保存しますが、定数の番号は現在のバージョンです。これらの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');
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
はfalseを返します。これはバージョン番号とは異なるため、関数が呼び出されます。

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()

オプションを更新

ユーザーの選択を上書きしないでください!

任意のオプションの更新は、バージョン番号を更新するのと同じ方法です。WordPressがオプションを初めて見たのはこれが初めてであっても、

を呼び出すことができます。 update_option() ただし、オプション値を常に更新したいとは限りません。実際、オプションを使用する場合、通常、ユーザーに設定をパーソナライズさせることです。

を使用することにより、プラグインを更新するたびにユーザーの選択肢を上書きします。これは私たちがやりたいことではありません。

上記の上記では、オプションが存在しない場合、update_option()がfalseを返すことがわかります。この動作を使用して、更新するオプションがデータベースに存在するかどうかをテストします。この場合、私たちは何もしません。それ以外の場合は、このオプションを作成します。

get_option()このテストは、オーバーライドしたくないオプションに必要であることに注意してください。場合によっては、バージョン番号を考慮して、これをやりたいと思うかもしれませんが、私たちは確かに古い価値を維持したくありません!

if (!defined('MY_AWESOME_PLUGIN_VERSION'))
    define('MY_AWESOME_PLUGIN_VERSION', '3.4.1');
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
特別なケース— Array

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サイトのパフォーマンスを向上させる新しい機能と機能が含まれます。第二に、更新は通常、Webサイトのセキュリティを危険にさらす可能性のあるバグと脆弱性を修正します。最後に、更新はWordPressの最新バージョンとの互換性を確保し、Webサイトがスムーズかつ効率的に実行されるようにします。

WordPressプラグインの安全な更新を確保する方法は?

セキュリティの更新を確保するには、更新プロセスを開始する前に、必ずWebサイトをバックアップしてください。これにより、更新プロセス中に問題がある場合は、ウェブサイトを以前の状態に簡単に復元できます。さらに、ライブサイトに適用する前に、ステージングサイトの更新をテストすることをお勧めします。

プラグインの更新が失敗した場合はどうすればよいですか?

プラグインの更新が失敗した場合、最初のステップは、バックアップからWebサイトを復元することです。次に、障害の原因を決定してみてください。これは、別のプラグインまたはテーマとの競合、またはWordPressのバージョンとの互換性の問題が原因である可能性があります。問題を特定したら、自分で修正するか、プラグイン開発者に連絡して助けを借りてください。

WordPressプラグインを更新するプロセスを自動的に実行する方法は?

WordPressには、プラグインを自動的に更新できる組み込み機能があります。この機能を有効にして、WordPressダッシュボードのプラグインセクションに移動し、自動的に更新するプラグインを選択し、クリックして自動更新を有効にすることができます。

プラグインの更新が私のウェブサイトに問題を引き起こした場合、プラグインの更新をロールバックできますか?

はい、プラグインの更新がウェブサイトに問題を引き起こす場合、プラグインの更新をロールバックできます。 WPロールバックなど、プラグインの以前のバージョンに簡単に復元できるプラグインがいくつかあります。

高度なWordPressプラグインを更新するにはどうすればよいですか?

Advanced WordPressプラグインは、フリープラグインと同様に更新されます。ただし、更新にアクセスするには、有効なライセンスキーが必要です。ライセンスキーを入力した後、WordPressダッシュボードからプラグインを更新できます。

複数のWordPressサイトへの更新を管理する最良の方法は何ですか?

複数のWordPressサイトを管理している場合は、各サイトのプラグインを個別に更新するのに多くの時間を費やす必要がある場合があります。より効率的な方法は、ManageWPやMainWPなどのWordPress管理ツールを使用することです。これにより、1つのダッシュボードからすべてのWebサイトの更新を管理できます。

特定のWordPressプラグインの自動更新を無効にする方法は?

特定のプラグインの自動更新を無効にする場合は、Easy Updates Managerなどのプラグインを使用できます。このプラグインを使用すると、Webサイト上の各プラグインの自動更新を制御できます。

私のバージョンのWordPressとプラグインの更新の互換性を確認する方法は?

プラグインを更新する前に、WordPressプラグインディレクトリのプラグインページにアクセスして、WordPressバージョンとの互換性を確認できます。ここでは、WordPressのさまざまなバージョンとのプラグインの互換性に関する情報を見つけることができます。

プラグインの更新が私のウェブサイトを壊した場合はどうすればよいですか?

プラグインの更新がWebサイトを壊す場合、最初のステップはバックアップからWebサイトを復元することです。次に、問題を引き起こしたプラグインを無効にします。 WordPressダッシュボードにアクセスできない場合は、WP-Content/Plugins Directoryのプラグインフォルダーを変更して、FTP経由でプラグインを無効にすることができます。プラグインを無効にした後、プラグイン開発者にトラブルシューティングまたは連絡してヘルプがあります。

以上がWordPressプラグインは正しい方法で更新されますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート