it-swarm.com.de

Wie vermeide ich Namenskonflikte beim Upgrade-Notifier?

Ich habe einen kurzen Hack als Plug-In eingefügt, um meiner Website Google Analytics hinzuzufügen. Nannte es "Google Analytics" und bot mir WP an, mein Plugin v0.1 auf ein zufälliges Plugin aus dem Plugin Repo zu aktualisieren.

Ich erinnere mich vage, dass es ein paar Mal um WP 2.7 bis 3.0 erhöht wurde. Gibt es irgendwo eine neue API, um dies zu deaktivieren, oder ist die einzige Möglichkeit, dies zu vermeiden, das Präfixieren von Plug-In-Namen (nicht ihres Dateinamens, sondern ihres tatsächlichen Namens, wie auf dem Plug-In-Bildschirm angezeigt), um sie eindeutig zu machen?

In meinem speziellen Anwendungsfall befindet sich das Plugin im mc-ga/mc-ga.php und heißt "Google Analytics", zusammen mit einigen anderen Metafeldern am Anfang des Header der Plugin-Datei. WP gibt einen auf "Google Analytics" basierenden Update-Hinweis aus (ich konnte im Repo keine mc-ga.php-Plugin-Datei finden).

Ermöglicht WP das Hinzufügen eines zusätzlichen Feldes, das mir nicht bekannt ist, z. eine Repo-URL oder etwas wirklich Einzigartiges, um solche Konflikte zu vermeiden?

4

Sie können Ihr Plugin aus der updateble Liste entfernen mit:

add_action( 'plugins_loaded', function(){
    add_filter( 'site_transient_update_plugins', function ( $value ) 
    {
        if( isset( $value->response['google-analytics/google-analytics.php'] ) )
            unset( $value->response['google-analytics/google-analytics.php'] );
        return $value;
    });
});

Wenn Sie diesen Filter hinzufügen, wird unser gleichnamiges Plugin vollständig von den Aktualisierungsprüfungen ausgeschlossen. Und es wird davon ausgegangen, dass wir die Updates manuell über einfache FPT-Uploads durchführen - oder ähnlich. Aber es gibt viele Faktoren, wie in Wenn ich ein Plugin (in seiner Haupt-PHP-Datei) umbenenne, erhalte ich trotzdem Benachrichtigungen über Updates? . Gemäß der OP-Beschreibung (gleicher Name, anderer Slug) ist es ohne Verwendung eines Filters möglicherweise am besten, den Version-Header des Plugins auf eine größere Zahl oder eine weniger konventionelle Zahl wie yyyy.mm.dd zu setzen.

Wenn wir unser eigenes Repo einstellen, wird es meiner Meinung nach keine Konflikte geben.

5
brasofilo

Was ich vorschlage ist: Bevor Sie Ihr Plugin erstellen, überprüfen Sie zuerst, ob der Name, den Sie vergeben möchten, bereits im WordPress-Plugin-Repository vorhanden ist. Wenn nicht, können Sie das Plugin weiterentwickeln.

Falls es existiert, geben Sie Ihrem Plugin einen anderen Namen. Da das Upgrade auf dem Namen basiert, können Sie nicht zwei verschiedene Plugins mit demselben Namen verwalten. WordPress führt diese Upgrade-Option automatisch aus dem offiziellen Repository aus.

0
sun

Fügen Sie dieses für die Nachwelt hinzu, falls es jemand anderes benötigt:

if (!defined('STRICTER_PLUGIN_UPDATES')) define('STRICTER_PLUGIN_UPDATES', false);

# ============
# WP Updates
# ============

if (STRICTER_PLUGIN_UPDATES) :

# - Drop plugin upgrades when the slugs don't match

add_filter('site_transient_update_plugins', function($updates) {
    if (!$updates->response) return $updates;

    foreach ($updates->response as $key => $response) {
        $slug = strpos($key, '/') !== false ? dirname($key) : basename($key, '.php');
        if ($slug != $response->slug) {
            unset($updates->response[$key]);
        }
    }

    return $updates;
});

endif; # STRICTER_PLUGIN_UPDATES
0

Wenn Sie ein Plugin haben, das für eine Site benutzerdefiniert ist, geben Sie als Präfix den Namen der Site an.

Wir werden auf keinen Fall ein Plugin mit dem Namen "Example.com - Google Analytics" in das WordPress.org-Verzeichnis aufnehmen.

Fügen Sie dem Plugin-Header außerdem ein Feld "Plugin-URI" hinzu. Die Plugin-URI wird als Teil des Abgleichs verwendet und bietet etwas Einzigartigeres als den Namen, mit dem abgeglichen werden soll.

0
Otto