ホームページ  >  記事  >  CMS チュートリアル  >  WordPress プラグインを自動的に更新する機能を開発する方法

WordPress プラグインを自動的に更新する機能を開発する方法

WBOY
WBOYオリジナル
2023-09-05 10:40:511562ブラウズ

WordPress プラグインを自動的に更新する機能を開発する方法

WordPress プラグインを自動的に更新する機能を開発する方法

WordPress は非常に人気のあるオープンソースのコンテンツ管理システム (CMS) であり、その機能を拡張するための豊富なプラグイン市場があります。 。プラグインが常に最新で安全であることを保証するために、開発者は自動更新を実装する必要があります。この記事では、自動更新 WordPress プラグインの開発方法を説明し、すぐに開始できるようにコード例を示します。

準備

開発を開始する前に、次の主要な手順を準備する必要があります:

  1. プラグイン ディレクトリを作成する: WordPress プラグイン内に作成します。 directory プラグイン ファイルを保存するフォルダー。
  2. プラグインのリモート リポジトリを取得します。プラグインの最新バージョンをどこかに保存し、その URL リンクを取得する必要があります。バージョン管理ツール (Git など) を使用してプラグインのコードを管理し、プラグイン リポジトリを Web サーバーにデプロイできます。
  3. 設定ファイルの作成: 自動更新の場合、プラグイン情報とバージョン番号を含む設定ファイルが必要です。構成ファイルを独自のサーバーに保存し、その URL を取得できます。

プラグインコードを書く

次に、自動更新機能を実装するためのプラグインコードを書きます。

まず、プラグイン ディレクトリにメイン プラグイン ファイル (例: plugin-name.php) を作成します。このファイルでは、プラグインの自動更新プロセスを管理するクラスを定義する必要があります。以下は、単純なプラグイン クラスの例です。

<?php
class Plugin_Name {
    private $plugin_file;
    private $plugin_slug;
    private $version;

    public function __construct($plugin_file, $plugin_slug, $version) {
        $this->plugin_file = $plugin_file;
        $this->plugin_slug = $plugin_slug;
        $this->version = $version;

        add_action('init', array($this, 'check_for_update'));
        add_filter('pre_set_site_transient_update_plugins', array($this, 'set_update_transient'));
    }

    public function check_for_update() {
        $config_url = 'https://example.com/plugin-config.json'; // 替换为您的配置文件URL

        $config = wp_remote_get($config_url);
        if (!is_wp_error($config)) {
            $config = json_decode(wp_remote_retrieve_body($config), true);

            if (isset($config['version']) && version_compare($this->version, $config['version'], '<')) {
                $download_url = $config['download_url'];
                $package = wp_remote_get($download_url);

                if (!is_wp_error($package)) {
                    $package_file = $this->plugin_file;

                    WP_Filesystem();
                    global $wp_filesystem;
                    $wp_filesystem->put_contents($package_file, wp_remote_retrieve_body($package));

                    // 更新插件版本号
                    $plugin_data = get_plugin_data($this->plugin_file);
                    $plugin_data['Version'] = $config['version'];
                    $plugin_data['RequiresWP'] = $config['requires_wp'];
                    $plugin_data['RequiresPHP'] = $config['requires_php'];
                    $plugin_data['TestedWP'] = $config['tested_wp'];

                    $all_plugins = get_plugins();
                    $all_plugins[$this->plugin_slug] = array_merge($all_plugins[$this->plugin_slug], $plugin_data);
                    update_option('active_plugins', array_keys($all_plugins));

                    delete_transient('update_plugins'); // 清除插件更新缓存
                }
            }
        }
    }

    public function set_update_transient($transient) {
        if (empty($transient->checked)) {
            return $transient;
        }

        $config_url = 'https://example.com/plugin-config.json'; // 替换为您的配置文件URL

        $config = wp_remote_get($config_url);
        if (!is_wp_error($config)) {
            $config = json_decode(wp_remote_retrieve_body($config), true);

            if (isset($config['version']) && version_compare($this->version, $config['version'], '<')) {
                $transient->response[$this->plugin_slug] = array(
                    'new_version' => $config['version'],
                    'package' => $config['download_url'],
                    'slug' => $this->plugin_slug
                );
            }
        }

        return $transient;
    }
}

// 实例化插件类
new Plugin_Name(__FILE__, 'plugin-folder/plugin-name.php', '1.0.0');
?>

上記のコード例では、プラグイン ファイル名 __FILE__、プラグイン スラグ、プラグイン バージョン番号を渡します。コンストラクター内のプラグイン クラスに追加します。次に、add_actionadd_filter を使用して、check_for_update メソッドと set_update_transient メソッドを対応する WordPress フックにバインドし、自動チェックと更新を実装します。特徴。

check_for_updateこのメソッドは、まずリモート設定ファイルからプラグインの最新バージョン番号とダウンロード リンクを取得します。次に、wp_remote_get 関数を使用して、プラグイン パッケージの最新バージョンをダウンロードします。次に、WP_Filesystem クラスと global $wp_filesystem を使用して、プラグイン ファイルを更新し、プラグインのバージョン情報を更新します。最後に、delete_transient 関数を使用してプラグインの更新キャッシュをクリアし、次回確認するときにプラグインの最新バージョンを取得できるようにします。

set_update_transientこのメソッドは、WordPress がプラグインの更新をチェックするときに呼び出され、プラグインの更新情報を設定するために使用されます。まず、リモート設定ファイルから最新のバージョン番号とプラグインのダウンロード リンクを取得します。更新情報は $transient 変数に保存され、WordPress がプラグインの更新を検出できるようになります。

上記は基本的な自動更新WordPressプラグインの実装例です。ニーズに応じて、コードをさらに最適化し、エラー処理やログなどの機能を追加できます。

リモート リポジトリと構成ファイルの構成

最後に、プラグインのリモート リポジトリと構成ファイルを構成する必要があります。 Git などのバージョン管理ツールを使用して、プラグインのコードを管理し、プラグイン リポジトリを Web サーバーにデプロイできます。次に、プラグイン情報とバージョン番号を含む構成ファイルを JSON 形式で作成します。構成ファイルをサーバーに保存し、プラグイン コードでその URL を参照します。

以下は設定ファイルの例です:

{
    "version": "1.0.1",
    "requires_wp": "5.2",
    "requires_php": "7.2",
    "tested_wp": "5.4",
    "download_url": "https://example.com/plugin-package.zip"
}

設定ファイルでは、プラグインの最新バージョン番号、WordPress の最小バージョン要件、最小バージョン要件を指定できます。 PHP およびプラグイン パッケージのダウンロード リンク。

結論

上記の手順とコード例に従うことで、自動更新 WordPress プラグインを簡単に開発できます。自動更新機能により、プラグインが常に最新かつ安全であることが保証され、より良いユーザー エクスペリエンスが提供されます。

開発中は、最新の WordPress 開発標準とベスト プラクティスを必ず使用してください。また、予期せぬ事態が発生した場合に備えて、更新する前にプラグイン ファイルをバックアップすることを忘れないでください。

あなたの開発が成功することを祈っています。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。