WordPress-Plugin – Selbst gehostetes Update

Lesezeit: 2 Minuten

Ich entwickle ein WordPress-Plugin, das Updates erfordert, obwohl die Plugin-Version von meinem Server aus überprüft wird. Es gibt mehrere von mir entwickelte Plugins, die genau denselben Server verwenden, um nach neuen Versionen zu suchen. Das Problem, das ich habe, ist, dass, wenn alle Plugins ein Update erfordern und ich auf Details anzeigen klicke, eines der Plugins Details des Updates (Version, Beschreibung usw.) anzeigt, aber die anderen Plugins keine Informationen anzeigen . Nach einigem Debuggen kann ich sehen, dass der Server mit Sicherheit Daten zurückgibt.

Meine Frage ist, wie kann ich den plugins_api-Filter mehrmals anwenden, ohne dass er mit den anderen Plugins in Konflikt gerät?

Benutzer-Avatar
dev.xiligroup

Deine Beobachtung ist richtig. Es ist nicht offensichtlich. Sogar das Buch von Brad und Ozh (Plugin Development Hrsg. Wrox) enthält einen Fehler im Beispiel auf Seite 267 im Kapitel „Erstellen Sie Ihr eigenes API-Repository“. Wie Sie habe ich (verlorene) Zeit damit verbracht, das Problem mit zwei Plugins in einer alternativen API zu finden …

Die Lösung:
Denken Sie daran, dass dieser erste Parameter im WP-Filter der ursprüngliche Wert ist, der an den Filter übergeben wird. Um also die Filter zu verketten (aufgelistet von Plugins mit alternativen APIs) … muss die erste Zeile lauten:

function xiliw_altapi_information( $false, $action, $args ) {
    $plugin_slug = plugin_basename( __FILE__ );
        // Check if this plugins API is about this plugin
        if( $args->slug != $plugin_slug ) {
            return $false; // var to conserve the value of previous filter of plugins list in alternate api. fixes book error not val false
        }

        // POST data to send to your API
        $args = array(
            'action' => 'plugin_information',
            'plugin_name' => $plugin_slug,
            'version' => $transient->checked[$plugin_slug],
            'registration' => $this->registration
        );//../..

Durch diesen Test gibt bei jedem Aufruf der Liste der Hooks nur einer – das betreffende Plugin – die richtige Antwort, um die Informationen für das Begrüßungsfenster anzuzeigen.

Wenn ich Zeit habe, werde ich wahrscheinlich bald einen vollständigeren Artikel über eine Klasse veröffentlichen, um diese alternative leistungsstarke API zu verwalten und wie man sie zu einem -privaten- Plugin hinzufügt.

  • Nur um es allen klar zu machen, der Schlüssel ist, dass der Code im Buch den booleschen Wert „false“ zurückgibt, während der obige Code die PHP-Variable „$false“ zurückgibt. Sehr subtil, aber ein riesiger Unterschied. Danke für diese Antwort +1.

    – Raben

    18. März 2012 um 15:42 Uhr

  • Es gibt ein gutes Argument dafür, dieses erste, äh, Argument in etwas anderes als umzubenennen $false. Warum nicht versuchen $original?

    – Tom Auger

    1. Oktober 2012 um 19:59 Uhr

1374090cookie-checkWordPress-Plugin – Selbst gehostetes Update

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy