Heim  >  Artikel  >  CMS-Tutorial  >  So entwickeln Sie eine Funktion, die ein WordPress-Plugin automatisch aktualisiert

So entwickeln Sie eine Funktion, die ein WordPress-Plugin automatisch aktualisiert

WBOY
WBOYOriginal
2023-09-05 10:40:511562Durchsuche

So entwickeln Sie eine Funktion, die ein WordPress-Plugin automatisch aktualisiert

So entwickeln Sie eine Funktion, die WordPress-Plugins automatisch aktualisiert

WordPress ist ein sehr beliebtes Open-Source-Content-Management-System (CMS) mit einem umfangreichen Plugin-Markt zur Erweiterung seiner Funktionalität. Um sicherzustellen, dass Plugins immer aktuell und sicher sind, müssen Entwickler automatische Updates implementieren. In diesem Artikel führen wir Sie durch die Entwicklung eines automatisch aktualisierenden WordPress-Plugins und stellen Codebeispiele bereit, die Ihnen den schnellen Einstieg erleichtern.

Vorbereitung

Bevor Sie mit der Entwicklung beginnen, müssen Sie die folgenden wichtigen Schritte vorbereiten:

  1. Plugin-Verzeichnis erstellen: Erstellen Sie einen Ordner im WordPress-Plugin-Verzeichnis, um Ihre Plugin-Dateien zu speichern.
  2. Holen Sie sich das Remote-Repository des Plugins: Sie müssen die neueste Version des Plugins irgendwo speichern und den URL-Link dazu erhalten. Sie können ein Versionskontrolltool (z. B. Git) verwenden, um den Code des Plug-Ins zu verwalten und dann das Plug-In-Repository auf einem Webserver bereitzustellen.
  3. Erstellen Sie eine Konfigurationsdatei: Für automatische Updates benötigen Sie eine Konfigurationsdatei, die die Plugin-Informationen und die Versionsnummer enthält. Sie können die Konfigurationsdatei auf Ihrem eigenen Server speichern und deren URL abrufen.

Schreiben Sie den Plug-in-Code

Als nächstes schreiben wir den Plug-in-Code, um die automatische Aktualisierungsfunktion zu implementieren.

Erstellen Sie zunächst eine Haupt-Plugin-Datei im Plugin-Verzeichnis, z. B. plugin-name.php. In dieser Datei müssen Sie eine Klasse definieren, um den automatischen Aktualisierungsprozess des Plugins zu verwalten. Hier ist ein einfaches Beispiel einer Plugin-Klasse: 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__、插件slug和插件版本号传递给插件类。然后,我们使用add_actionadd_filtercheck_for_update方法和set_update_transient方法绑定到相应的WordPress钩子上,以实现自动检查和更新的功能。

check_for_update方法首先从远程配置文件中获取插件的最新版本号和下载链接。然后,通过wp_remote_get函数来下载最新版本的插件包。接下来,我们使用WP_Filesystem类和global $wp_filesystem来更新插件文件,并更新插件的版本信息。最后,我们使用delete_transient函数来清除插件的更新缓存,以便在下次检查时得到最新版本的插件。

set_update_transient方法在WordPress检查插件更新时被调用,并用来设置插件的更新信息。首先,从远程配置文件中获取插件的最新版本号和下载链接。然后,将更新信息存储在$transient

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

Im obigen Codebeispiel übergeben wir den Plugin-Dateinamen __FILE__, den Plugin-Slug und die Plugin-Versionsnummer an die Plugin-Klasse im Konstruktor. Dann verwenden wir add_action und add_filter, um die Methode check_for_update und die Methode set_update_transient an die entsprechenden WordPress-Hooks zu binden Erzielen Sie automatische Überprüfungs- und Aktualisierungsfunktionen.

Die Methode check_for_update ruft zunächst die neueste Versionsnummer und den Download-Link des Plug-Ins aus der Remote-Konfigurationsdatei ab. Laden Sie dann die neueste Version des Plug-in-Pakets über die Funktion wp_remote_get herunter. Als Nächstes verwenden wir die Klasse WP_Filesystem und das globale $wp_filesystem, um die Plug-in-Datei und die Plug-in-Versionsinformationen zu aktualisieren. Schließlich verwenden wir die Funktion delete_transient, um den Update-Cache des Plugins zu leeren, damit wir bei der nächsten Überprüfung die neueste Version des Plugins erhalten.

Die Methode set_update_transient wird aufgerufen, wenn WordPress nach Plug-in-Updates sucht und zum Festlegen der Plug-in-Update-Informationen verwendet wird. Besorgen Sie sich zunächst die neueste Versionsnummer und den Download-Link des Plugins aus der Remote-Konfigurationsdatei. Speichern Sie dann die Update-Informationen in der Variablen $transient, damit WordPress Updates für das Plugin erkennen kann.

Das Obige ist ein Implementierungsbeispiel eines einfachen WordPress-Plug-Ins für automatische Updates. Je nach Bedarf können Sie den Code weiter optimieren und Funktionen wie Fehlerbehandlung und Protokollierung hinzufügen.

Konfigurieren Sie das Remote-Repository und die Konfigurationsdateien.

Abschließend müssen Sie das Remote-Repository und die Konfigurationsdateien des Plugins konfigurieren. Sie können ein Versionskontrolltool wie Git verwenden, um den Code des Plug-Ins zu verwalten und das Plug-In-Repository auf einem Webserver bereitzustellen. Erstellen Sie dann eine Konfigurationsdatei im JSON-Format, die die Plug-in-Informationen und die Versionsnummer enthält. Speichern Sie die Konfigurationsdatei auf Ihrem Server und verweisen Sie im Plugin-Code auf deren URL.

Hier ist ein Beispiel für eine Konfigurationsdatei:

rrreee

In der Konfigurationsdatei können Sie die neueste Versionsnummer des Plugins, die Mindestversionsanforderung für WordPress, die Mindestversionsanforderung für PHP und den Download-Link für angeben Plugin-Paket.

Fazit

Indem Sie die oben genannten Schritte und Codebeispiele befolgen, können Sie ganz einfach ein automatisch aktualisierendes WordPress-Plugin entwickeln. Mit der automatischen Aktualisierungsfunktion stellen Sie sicher, dass Ihre Plugins immer auf dem neuesten Stand und sicher sind, und sorgen so für ein besseres Benutzererlebnis. 🎜🎜Achten Sie während der Entwicklung darauf, die neuesten WordPress-Entwicklungsstandards und Best Practices zu verwenden. Denken Sie außerdem daran, Ihre Plugin-Dateien vor dem Update zu sichern, falls etwas Unerwartetes passiert. 🎜🎜Wünsche dir viel Erfolg bei deiner Entwicklung! 🎜

Das obige ist der detaillierte Inhalt vonSo entwickeln Sie eine Funktion, die ein WordPress-Plugin automatisch aktualisiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn