it-swarm.com.de

Wie aktualisiere ich mein Plugin automatisch?

Wie kann ich mein Plugin mit diesem New version available. Upgrade Automatically -Dialog anzeigen lassen, wenn mein Plugin eine neue Version hat? Speziell für Plugins, die nicht im WP.org-Repository gehostet werden.

4
Jared

Diese Bibliothek integriert Auto-Updates für privat gehostete Plugins. Sieht großartig aus.

2
Dalton

Die einfachste Möglichkeit, die ich mir vorstellen kann, besteht darin, dass Ihr Plugin "phone home" eine URL auf Ihrer Website überprüft, die die aktuelle Version Ihres Plugins zurückgibt.

Auf diese Weise kann Ihr Plugin (auf einer anderen Website installiert) seine Version mit der "aktuellen" Version auf Ihrer Website vergleichen, um festzustellen, ob es dieselbe oder eine neuere Version ist.

Edit: Beispielcode

Ich sollte darauf hinweisen, bevor Sie dies implementieren : dies fügt ein Banner über dem oberen Bildschirmrand hinzu. Wenn Sie nur möchten, dass Ihr Plugin ein Update im Menü unten links anzeigt, geschieht dies meines Erachtens automatisch, wenn Sie die neue Version in das Wordpress-Repository hochladen. Wenn Sie das Banner oben haben möchten, fahren Sie fort.

Ich würde eine Vorlage speziell für diese Seite erstellen, damit die Kopf- und Fußzeile nicht enthalten sind:

<?php

    // Template Name: Bare Template

    while (have_posts()) : the_post();
        the_content();
    endwhile;

?>

Auf diese Weise wird nur der Seiteninhalt gedruckt, der für das, was wir tun, gut ist.

Richten Sie als Nächstes eine Seite ein, die diese Vorlage verwendet, beispielsweise "latest-plugin-version". Wenn Sie diese Seite jetzt in Ihrem Browser anzeigen, sollte nur der Text der Seite ohne zusätzlichen HTML-Code angezeigt werden.

Erstellen Sie in Ihrem Plugin eine Funktion, die Ihren Hinweis druckt. Ich habe in diesem Beispiel Inline-Stile verwendet. Wenn Sie möchten, können Sie Klassen verwenden.

function yourpluginname_check_for_new_version() {

    /* You probably shouldn't check for updates more than once a day, 
    for everyone's bandwidth's sake. */

    $last_check = get_option('yourpluginname_lastcheck');
    if ( $last_check + 86400 > time() ) { return; }

    // If we're still here, check your site for a new version.

    $current_version = get_option('yourpluginname_version');
    $latest_version = file_get_contents('http://www.yourdomain.com/latest-plugin-version/');

    if ( $current_version != $latest_version ) {
        ?>
        <div style="background: #FFDDDD; color: red; width: 600px; 
                    margin: 20px auto; padding: 10px; text-align: center;
                    border: 2px red solid;">
            There's a new version of MY PLUGIN available! You should upgrade now.
        </div>
        <?php
    }

    // Log that we've checked for an update now.
    update_option('yourpluginname_lastcheck', time());

}

Und dann, um es so zu binden, dass es die Funktion ausführt:

add_action('admin_notices', 'yourpluginname_check_for_new_version');

Jetzt sollten Sie in Ihrer Installationsfunktion eine Option für die Versionsnummer hinzufügen, die in Wordpress des Benutzers gespeichert werden soll:

update_option( 'yourpluginname_version', '2.0' );

Sie können update_option anstelle von add_option verwenden, da die Option hinzugefügt wird, wenn sie noch nicht vorhanden ist.

Das sollte es ungefähr tun.

2
Rob Williams

Es gibt ein kostenloses Plugin, das ein Autoupgrade für privat gehostete Plugins ermöglicht: https://github.com/meglio/wp-upgrademe

1
Meglio