WordPress: add_filter oder add_action? Eigentlich egal!

Eine wichtige Doktrin der WordPress-Entwicklung lautet:

Benutze Aktionen um die Funktionalität zu erweitern und Filter um Daten zu ändern.

Wir haben alle davon gehört und sie wird von uns immer beachtet. Immer? Nun ja, …

… wenn ich an einer bestimmten Stelle eine Funktion hinzufügen möchte und weit und breit kein Action-Hook verfügbar ist, dann nehme ich eben ein Filter-Hook ohne über die Doktrin nachzudenken.

Überraschenderweise funktioniert das auch. Aber warum? Wenn immer so darauf hingewiesen wird, dass man den richtigen Hook benutzen soll, dann muss es doch einen Unterschied zwischen den beiden Arten geben. Schauen wir doch mal hinter die Kulissen (/wp-include/plugin.php):

function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) { return add_filter($tag, $function_to_add, $priority, $accepted_args); }

Was? add_action  macht nichts anders als add_filter  aufzurufen und sonst nichts? Es gibt keinen Unterschied in der Funktionalität, es ist einfach nur ein andere Name. Es gibt also keinen Grund, warum man nicht add_filter  statt add_action  benutzen sollte, wenn es keine andere Lösung gibt.

Ich sage nicht, das man wahllos add_action  und add_filter  nehmen soll. Die Benutzung des richtigen Hook-Typs vereinfacht das Lesen und Warten des Quelltextes, für Dich und für andere. Trotzdem, wenn es einfach keine andere Lösung gibt, um ein Problem zu lösen, dann sollte man nicht zögern und einen Filter-Hook statt eines Action-Hooks zu benutzen, denn eigentlich gibt es keinen Unterschied zwischen den beiden.

WordPress: Linklist – neue Version 0.5

Für eine längere Zeit gab es keine neue Version des Plugins „Linklist“, einfach weil es funktionierte, es bestand kein Bedarf für ein Update. Neulich bekam ich eine Mail mit einem Erweiterungs-Vorschlag, den ich gerne aufgegriffen habe.

Version 0.5 erlaubt es jetzt, in einzelnen Beiträge oder Seiten die Ausgabe der Linkliste zu deaktivieren:

linklist-addnew

Das Plugin nimmt immer noch an, dass die Linkliste in jedem Beitrag und auf jeder Seite dargestellt wird, deshalb hat man das Plugin ja installiert. Man kann aber für einzelne Beiträge/Seiten die Darstellung deaktivieren indem man die entsprechende Checkbox anklickt.

Wenn man die die Darstellung der Linkliste für bereits existierende Beiträge/Seiten ändern möchte, so muss man nicht in den Editor wechseln, sondern kann einfach das „Quick Edit“ Feature nutzen:

linklist-quickedit

Ich habe mich entschieden eine Selectbox anstatt einer Checkbox zu nehmen, da WordPress den Quick-Edit-Dialog sehr eigenwillig darstellt und man es nicht beinflussen kann. (Kann man? Bitte eine Mail an mich!)

Wenn die Darstellung vieler Beiträge/Seiten geändert werden soll, muss man nicht jeden einzelnen Beitrag oder Seite einzeln editieren, sondern kann das Bulk-Edit-Feature nutzen:

linklist-bulkedit-1

Man kann die neue Version über das WordPress aktualisieren oder es im Repository downloaden.

Ältere WordPress-Plugin-Versionen herunterladen

Du hast also Deine WordPress-Plugins auf den neusten Stand gebracht…

… und Dein Blog funktioniert nicht mehr

… und Du hast kein Backup

… natürlich nicht!

Wäre es nicht schön, wenn Du die vorherige Version herunterladen könntest und Dein Blog wieder funktionieren würde? Nun… das geht! Ältere WordPress-Plugin-Versionen herunterladen weiterlesen

WordPress – Sie haben Updates!

Am 11. März wurde vom sehr beliebten Plugin „WordPress SEO“ ein Update veröffentlicht, weil die bisherige Version erhebliche Sicherheitslücken aufwies (CSRF und blind SQL injection).
Im Laufe des Tages wurden Stimmen laut, das Yoast nicht alle Möglichkeiten genutzt hat, um auf das Problem und die Update-Notwendigkeit aufmerksam zu machen.

Ich persönlich konnte das Problem nicht nachvollziehen, denn ich habe am frühen Mittag die neue Plugin-Version installiert. Wie konnte das so sein?
WordPress – Sie haben Updates! weiterlesen

WordPress: Nutzer über die Zeit der Kommentarschließung informieren

Um um vermeiden, dass Spammer die Kommentare älterer Beiträge mit sinnlosen Kommentaren zu müllen, bietet WordPress die Möglichkeit, die Kommentarfunktion eines Beitrages nach einer bestimmten Zeit zu sperren.

Kommentare schließen

Für die Benutzer könnte es aber überraschend sein, wenn die Kommentarmöglichkeit plötzlich verschwunden ist. Es wäre vielleicht eine gute Idee, sie über diesen Termin zu informieren.
WordPress: Nutzer über die Zeit der Kommentarschließung informieren weiterlesen

Nur WordPress-Beiträge abonnieren

Es sol Leute geben, die den Feed dieses Blogs nur wegen der WordPress-Beiträge abonniert haben. Sie werden im Moment etwas enttäuscht sein (oder sogar das Feed-Abo beenden), weil hier in letzter Zeit nichts mehr über WordPress steht.

Die Gründe dafür sind jetzt nicht so wichtig, aber wer meine anderen Beiträge nicht im Feed haben möchte, dem kann geholfen werden. Einfach die Standard-Feed-Adresse durch

http://elektroelch.de/blog/category/wordpress/feed/

ersetzen und schon gibt’s nur noch WordPress-Kram…

 

Neue Version von Linklist (v0.4) WordPress-Plugin

Ein Neutzer meine WordPress-Plugins Linklist möchte dieses gerne in Zusammenarbeit mit einem Like/Unlike-Plugin nutzen.

Leider fügte Linklist auch die Links des Like/Unlike-Plugins zu der Liste hinzu und setzte die Liste hinter das Like-Icon:

linklist1

So war das natürlich nicht gedacht. Ich habe deshalb zwei neue Einstellungen hinzugefügt:

  1. Man kann jetzt mehrere Klassennamen für DIVs angeben, deren Inhalt nicht nach Links durchsucht werden soll. Dises Einstellung funktioniert auch mit unvollständigen DIVs (<div> und ein schließendes </div>).
  2. Die Priorität des Plugins kann eingestellt werden. Die ermöglicht Linklist die Links zu sammeln und die Liste in den Beitrag einzufügen bevor andere Plugins ihre eigenen Inhalte einfügen.

Das obige Beispiel sieht dann so aus:

linklist2

… und natürlich ist das Plugin mit WordPress 3.8 kompatibel.

Kleines Update für pagebar (v2.65)

Das letzte Update für das pagebar-Plugin gab es vor über einem Jahr. Da aber alle neuen Ideen in Version 3 eingebaut werden sollen und das Plugin mit allen aktuellen WordPress-Versionen funktioniert, gab es keinen Grund, das Plugin zu erneuern.

Neulich hat mir allerdings Borisa Djuraskovic von „Webhosting Hub“ eine Email geschrieben, dass er eine serbische Sprachdatei angefertigt hat. Das war eine gute Gelegenheit, ein kleines Feature einzubauen, dass mir schon länger im Kopf herum schwirrt:
Kleines Update für pagebar (v2.65) weiterlesen

Wie lange ist eine WordPress-Version aktuell?

Die neue WordPress-Version 3.6 wurde viel später veröffentlicht als geplant; die Veröffentlichung war für Ende April vorgesehen und wurde dann schließlich Ende August herausgegeben.

wp_versions_500

Durchschnittlich wurde eine WordPress-Version durch eine neue nach 198 Tagen ersetzt. Auffällig ist die Version 2.0, die für über eine Jahr die aktuelle Version war (Dezember 2005 bis Januar 2007). Mit der Version 2.1 nahm die Entwicklung mehr Geschwindigkeit auf und neue Versionen wurden nach vier bis sechs Monaten veröffentlicht.

(Quelle: Wikipedia)

Wie kürzlich ist „kürzlich“?

Wenn man Plugins deaktiviert kann man sie noch einige Zeit unter der Rubrik „Kürzlich Aktiviert“ auflisten:

kuerzlichaktiv

„Kürzlich“ ist nicht unbedingt eine genaue Aussage. Wie lange gelten Plugins denn als „Kürzlich aktiviert“? Um das herauszufinden müssen wir einen Blick in den Quellcode werfen.
In Zeile 166 der Datei wp-admin/plugins.php wird die Einstellung „recently activated“ aktualisiert, wenn ein Plugin deaktiviert wird:

Die Einstellung enthält ein serialisiertes assoziatives Feld, das als Schlüssel den Pfad zur Hauptdatei des Plugins und als Wert die Zeit (als Unixtime), zu der das Plugin deaktiviert wurde, enthält.

183recently_activated/td>a:1:{s:21:“hello-dolly/hello.php“;i:1357900255;}

Die Zeitangabe wird benutzt um vor der Erstellung der Plugintabelle zu ermitteln, welche Plugins „kürzlich aktiv“ waren (wp-admin/includes/class-wp-plugins-list-table.php Zeile 76):

Der Code durchsucht alle Plugin-Namen, die in „recently acitivated“ gespeichert sind und entfernt jene, die läter als eine Woche sind und speichert die anderen zurück in die Datenbank.

Die Antwort auf die Frage ist also: WordPress definiert „kürzlich“ als eine Woche.