Mal 'ne Frage (update)
Samstag, 25.2.2023, 10:39 > daMaxKennt sich hier jemand mit WordPress-Hooks aus?
Ich habe gerade mal wieder das Plugin "Tagline Randomizer" aktiviert, das mir zufällige Überschriften da oben ↑ reinfummelt (nicht aufm Handy). Leider wird immer nur eine neue Tagline gezogen, wenn ich im Backend irgend etwas mache (z.B. die Seite neu lade oder oder irgendwo hin klicke). Ich hätte es aber lieber, es gäbe eine neue Tagline bei jedem Neuladen der Seite. Das bekomme ich aber ums Verrecken nicht gebacken. Ich habe inzwischen diverse add_action()
und add_filter()
Varianten durchprobiert, aber ich kriege es einfach nicht hin
Habt ihr eine Idee, wie man das Plugin umschreiben muss, damit man bei jedem Reload eine neue Tagline angezeigt bekommt? Das Plugin verwendet derzeit add_action("init","tr_execute")
, aber das scheint nicht genau das zu tun, was ich gerne hätte.
Das Plugin ist längst nicht mehr offiziell zu bekommen, hier ist der Quellcode.
Update: ich habe das Plugin jetzt komplett durch handgefertigtes Javascript ersetzt (und dabei festgestellt, dass ich schon ziemlich viele ziemlich derbe Hacks in meinem Theme habe ). Viel Spaß beim Neuladen der Seite
Ich habe den Plugin-Code nur kurz überflogen, da sieht nichts offensichtlich falsch aus.
Ich würde eher auf ein Cache-Plugin tippen, was das Neuladen des Textes unterbindet.
Ein paar Zeilen JavaScript um den random-Text-Generator ins Frontend zu schieben?
@meh: ich habe hier kein Cache-Plugin laufen.
Wäre sicher auch 'ne Möglichkeit, aber das muss doch irgendwie mit dem bestehenden Code gehen
Ich meine mich zu erinnern, dass fopen() böse ist, im Kontext von WordPress-Elementen; das heißt einmal
allow_url_fopen=1
in der php.ini und dann sehr offene Zugriffsrechte für dietr_taglines.txt
notwendig; aber ich meine, dass es dann gar nicht funktionieren dürfte. Und nicht nur, wenn nicht eingeloggt, aber wer weiß.Auch update_option() ist eigentlich dem Plugin-Entwickler die Aufgabe zugewiesen zu checken, ob der Nutzer das dürfen soll, also eigentlich müssten das auch nicht-eingeloggte Nutzer aufrufen können.
Mal am unteren Ende von function tr_execute() ein update_option eingefügt um zu sehen, ob das fopen das Problem ist oder es gar nicht ausgeführt wird?
update_option('blogdescription', $buffer[rand(1,$x)]);
}
update_option('blogdescription', 'meh');
}
Gerade nur begrenzt viel Zeit übrig, sowas auszuprobieren, daher von mir gerade nur doofe bis potenziell hilfreiche Fragen.
@meh: danke für die Infos, da muss ich heute Abend mal nach gucken....
@meh: Das ist ja ultra seltsam! Wenn man diesen Link aufruft:
https://blog.todamax.net/2023/mal-ne-frage-50/
dann tut ein page refresh genau das was es soll, nämlich eine neue Tagline ziehen. Auch unangemeldet. Aber auf der Startseite tut's nicht. Es muss da irgendeinen Unterschied zwischen der Index und der Einzelner-Post-Seite geben
Ich raff' das nich'.
@daMax:
Ne, kann ich nicht reproduzieren, dass sich das überhaupt ändert.
Irgendwie kommt es mir auch nicht ideal vor, dass du bei jedem Aufruf deine Blogbeschreibung updatest.
Also "lies aus dieser Datei", "scheibe in Datenbank", "generiere dann das HTML für den Nutzer". Sind viele Schritte für jeden Aufruf.
Eventuell wäre dafür ein Schedule wie "jede Minute" das sinnvollere Werkzeug. Aber ich verstehe auch die Motivation, dass jeder Seitenaufruf einen neuen Satz zeigen soll. Aber vielleicht kann man die Stelle, wo die Blogbeschreibung ausgelesen wird ändern, statt sie immer zu updaten. Endlich, mehr Arbeit und mehr Dinge, die man kaputt-debuggen kann, das wolltest du ursprünglich, oder? :S
WordPress gehört eindeutig zu den Tools die man gleichzeitig lieben und hassen kann.
@meh: hm... nee, jetzt kann ich das auch nicht mehr nachstellen. Oh je. Ich habe schon wieder keinen Bock mehr
Mit diesem Link: https://blog.todamax.net/2023/mal-ne-frage-50/#comment-1008033 scheint es zu funktionieren.
Ja, du hast ja recht. Wahrscheinlich wäre das als JS besser, weniger aufwändig, performanter und sicherer. Seufz.
True that.
@meh: hm.. also nach einem Blick in den tatsächlich von WP erzeugten HTML-Quellcode kapiere ich, warum das Plugin die Description des Blogs in der Datenbank ändert: damit z.B. das SEO-Plugin darauf zugreifen und seine Magie betreiben kann... seufz. Ich glaube, ich werde das so machen: die Blogdescription wird statisch werden und ich schreibe mit ein kleines JS, das die Tagline da oben dynamisch anpasst....
Ein Traum!
@meh: