WordPress Plugin de-/installieren

bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.

Kommentare

  
  1. Lazy sagt:

    Klasse HowTo - es wäre prima, wenn dies alles bald in alle WP Plugins miteinfliessen würde, dann bräuchte man selbst keine "Nacharbeit" mehr leisten.. und das CleanOptions Plugin wäre auch hinfällig bzw. würde es wohl werden (irgendwann), da WP auch die RSS Einträge/Handhabung in der options-Tabelle verbessern will und dies sicherlich irgendwann macht.

  2. ad sagt:

    Nicht ganz das Thema, aber...

    Ich habe bei deinen Plugins (c)-Feed und Search & Replace immer das Problem, dass beim Aktualisieren die neue Version in einem weiteren Unterordner entpackt wird. Hat zur Folge, dass das Plugin nach dem Update nicht mehr funktioniert. Bin ich zu blöd, oder ist das ein Bug?

  3. @ad: habe die Struktur im SVN geändert, dass sollte seit geraumer Zeit klappen. Rückmeldung wäre schön.

  4. Hi Frank,

    vielen Dank für diesen Hinweis! Ich bereite gerade meinen Blog-Relaunch vor und arbeite deshalb an einem Plugin. Ich habe mir in der letzten Zeit viele Plugins und vor allem meine WordPress-Datenbank angeschaut und festgestellt, dass die wenigsten Plugins ihre alten (und obsoleten) Settings beim deinstallieren entfernen.

    Gerade wer viel testet und Plugins ausprobiert, wird mit einer zugemüllten Options-Tabelle bestraft. Ich finde jeder Plugin-Entwickler (Ich werde es in Zukunft so machen) sollte eine Option anbieten "Optionen bei Deaktivierung entfernen", das per Default gesetzt wird.

    So kann jeder User entscheiden, ob er eventuell die Settings behalten möchte - ideal wenn man ein Plugin nur testweise deinstalliert um zu debuggen oder zu testen. Einstellungen gehen in diesem Fall nicht verloren.

    Danke für den Hinweis, ich hoffe, es nehmen sich einige WP-Entwickler zu Herzen!

  5. @Tim (PHP Blogger): sehr schön, dass hat es ja schon etwas gebracht, diesen Artikel aufzusetzen. Der Hinweis, wenn man den Hook nutzt, dann werden die Einträge bei jeder Deaktivierung gelöscht! Daher ist die Option auf der options-Seite eine Möglichkeit die Daten zu halten und bspw. ein Update durch zuführen und alle Plugins zu deaktivieren. So mache ich es in den anderen Plugins, allerdings dachte ich mir bei Adminimize, dass man die Optionen besser nach jedem Deaktivieren neu setzen sollte, vermeidet Fehler beim Nutzer.

  6. ad sagt:

    @Frank: Nehme alles zurück und behaupte das Gegenteil! Funktioniert (jetzt).

  7. Ich biete dafür den Nutzern meines Plugins einen Button "Default-Einstellungen wieder herstellen" an. Man kennt das ja bereits von Firmware (z.B. Handys und Navis) - so hat jeder selbst Gewalt darüber, wann er die Defaults drübergebügelt bekommt.

    Aber das muss natürlich immer von Fall zu Fall entschieden werden. Bei einem Plugin oder Theme mag es gut so sein, bei einem anderen ist es viell. wirklich besser, wenn man beim Aktivieren wieder die Grundeinstellungen vorgibt.

  8. @ad: wunderbar

  9. Uwe sagt:

    Die Hinweise zum Abräumen obsoleter DB-Einträge sind gut und vollkommen richtig.

    Ansonsten würde ich aber den letzten beiden Punkten widersprechen wollen. Ich würde während der Lebenszeit eines Plugins auch durchaus Default-Einträge in der DB stehen lassen. Falls andere Plugins diese Werte evtl. ebenfalls nutzen baut man sonst nur unnötige Abhängigkeiten auf. Mal abgesehen davon das wir hier wohl eher nicht von Tabellen mit Datensätzen > 1.000.000 reden, oder?

    Auch das ständige Optimieren der Tabellen kann ich nicht gutheissen. Je nachdem welche Primary Keys bei den nächsten Inserts verwendet werden kann es nämlich sein das dann die DB-Engine erst wieder aufwändig die Pages umsortieren muss um den neuen Primary Key an der richtigen Stelle einsortieren zu können. Wenn an dieser Stelle noch leerer Platz vom vorhergehenden Löschen vorhanden ist kann er direkt genutzt werden. Und das geht deutlich performanter als wenn erst Platz geschaffen werden muss.

    Die Kombination beider Methoden (Default-Werte aus DB löschen und ständiges Optimieren) kann dann schnell dazu führen das man das Gegenteil von dem erreicht was man will: Mehr Last für den DB-Server anstelle weniger.

  10. @Uwe: Das Optimieren soll ja daher per Zufall passieren, immer wäre zu viel und dann treffen deine Punkte zu. Aktuell binde ich sie nur ein, damit nach dem Deinstallieren des Plugins, was ja an sich nicht häufig vorkommt, die Tabelle optimiert wird.
    Datenbank-Einträge eines Plugins werden an sich nie von anderen Plugins benötigt. Ich empfinde es auch nur als besser, die Einträge zu löschen, die man nicht benötigt (0, ''), nicht die default-Einträge. Die Tabellen bewegen sich in der Regel bei 100-200 Einträgen, mir sind aber auch schon Tabellen untergekommen, in denen 2500 Einträge waren, weil man die Einträge nach dem Deaktivieren eines Plugins nicht entfernt hat. im laufe eines Bloglebens wird so einiges am Liveblog getestet.

  11. Ralf sagt:

    Wenn jedes Plugin die Tabelle zufällig optimiert, dann wird u.U. die Tabelle an einem Tag zehn mal von verschiedenen Plugins optimiert. Gelinde gesagt: Blödsinn. Oder?

    Besser wäre es wenn die Optimierung von einem eigenen Pflege-Plugin durchgeführt wird. Dieses könnte dann auch bei jeder Deinstallation (besser gesagt, bei jeder Deaktivierung) eines Plugins gestartet werden.

    Die Tabelle nach einer Deinstallation/Deaktivierung zu optimieren finde ich auch etwas übertrieben. Es werden vielleicht 10,20 oder 30 Einträge gelöscht. Kein wirklicher Grund die Tabelle zu optimieren.

    Uwe hat da schon recht: Wenn jedes Plugin die Tabelle/Datenbank pflegt, kann es schnell mal zuviel des Guten werden.

  12. @Ralf: das heißt aber auch, dass der User 10 Plugins pro Tag deaktivieren muss. Blödsinn. Oder?

  13. @Frank: gerade bei Spam, lösche ich des öfteren 100te oder 1000te Einträge.

    Die Diskussion zeigt ja auch, dass es ein Thema ist und so mehr Input bringt. Ich werde es mir genauer ansehen.

  14. Ralf sagt:

    Bei meinem Kommentar sind wohl zwei Punkte durcheinander gekommen.

    Du schreibst, dass es sinnvoll wäre wenn ein Plugin die Datenbank/Tabelle optimiert wenn es in den Tabellen häufiger Änderungen vornimmt (z.B. Spam löscht). Eine Optimierung lohnt sich meistens aber nur dann, wenn massiv Daten geändert/gelöscht wurden.
    Wirklich massive Änderungen stehen eigentlich nur dann an, wenn Spam gelöscht wird. Ansonsten fallen mir nicht viele Aktionen ein wo massiv was an den Daten geändert wird.
    Deswegen denke ich das es bei den allermeisten Plugins arg übertrieben wäre wenn diese auch noch die Tabellen optimieren würden. Zumal dann eben das eintreten könnte, was ich oben beschrieben habe. Viele Plugins optimieren die Tabelle weil sie Daten ändern/löschen und jedes Plugin optimiert erstmal die Tabelle(n).

    Beim Deinstallieren kommt es natürlich darauf an wie viele Daten ein Plugin gespeichert hat und wo. Wenn z.B. ein Statistik-Plugin deinstalliert wird, werden wohl recht viele Daten gelöscht. Allerdings stehen die i.d.R. in einer eigenen Tabelle. Da diese gelöscht wurde, kann man sie schlecht optimieren. Und die paar Einträge die in der Tabelle wp_options gemacht wurden, da lohnt sich seltenst eine Optimierung.

    Ich halte es einfach für die bessere Strategie die Pflege der DB/Tabellen in einem Rutsch durchzuführen. Das am besten auch dann, wenn nicht gerade Besucherspitzen zu verzeichnen sind. Also per Crown-Job irgendwann nachts.
    Denn überleg mal was passieren würde wenn zur Mittagszeit gerade viele Besucher vorbei kommen die einen Kommentar hinterlassen und du gleichzeitig in der Mittagspause mal eben Spam löscht was dazu führt das die Tabelle optimiert wird. Im schlimmsten Fall kommen einzelne Kommentare nicht durch weil eben die Tabelle während er Optimierung gesperrt ist. Das eine Optimierung gerade bei einigen tausend Kommentaren nicht mal eben so durchgeführt ist, dürfte auch klar sein.

  15. @Ralf: definitiv, die Pflege einem Bereich zu übergeben wäre sinnvoller. Es sollte ja auch nur ein Anreit und Möglichkeit sein. Eventuell schreibe ich das nochmal um und stelle es so dar, wie wir es hier in den Kommentaren sehen. Am besten wäre wohl eine Funktion dafür zu haben und die über alles zu steuern.

  16. Ralf sagt:

    Ich weiß, der Beitrag soll nur verdeutlichen wie man es machen kann. Wenn ich es mir aber genau überlege, dann wäre es eigentlich Aufgabe von WordPress die Plugins und deren Installationsreste zu verwalten. Wenn schon ein Blogsystem die Möglichkeit bietet Plugins zu verwenden, dann ist es quasi ein Armutszeugnis wenn es keine Funktionen gibt um anschließend wieder aufzuräumen.
    Es wäre ganz gut gewesen wenn es bei WP eine Funktion geben würde mit deren Hilfe man Tabellen anlegen kann. Diese Funktion würde dann gleichzeitig protokollieren welches Plugin welche Tabellen angelegt hat und in welchen Tabellen das Plugin Daten geschrieben hat. Dann wäre es auch kein Problem einen Menüpunkt "Plugins deinstallieren" anzubieten der entsprechende Datenreste weg putzen kann.

    So ist das Zumüllen der Datenbank vorprogrammiert, ein Punkt der nicht gerade für WordPress spricht. Merkwürdig das sich die Entwickler bis jetzt darüber noch keine gedanken gemacht haben und alles auf die Pluginentwickler abwälzen.

  17. @Ralf: stimme ich voll zu, schiebe es aber auf das viel zu schnelle Wachstum von WP; WP ist zu schnell zu groß und populär geworden, es war keine Zeit mit den Anforderungen zu wachsen und mittlerweile sind die Anforderungen sehr hoch und die Prioritäten kommen aus anderen Richtungen, denn nur von OSS kann man nicht leben. Schau ich mir andere Applikationen mit ähnlichen offenen Schnittstellen an, auch Businesssystem für viel Geld, dann sehe ich kaum bessere lösungen.

  18. Gunther sagt:

    Wer bis WP 2.7 nicht warten will ...

    Das Plugin installiert nach Wahl Themes und Plugins und löscht auch beides. Bei den Plugins Löschung mit Nachfrage und genauer Ordnerauflistung. Es kann wohl auch automatisch die Wahl zwischen Plugin und Theme-Upload treffen, aber soweit wollte ich mich darauf nicht verlassen.

© 2013, since 2005 bueltge.de [by:ltge.de] · Theme is built by ThemeShift