Action Hooks bzw. Filter und Funktion gesucht

  • Hallo,

    ich möchte ein Plugin schreiben, dass auf einem zweiten Plugin aufbaut.
    Das zweite Plugin wird über Tags im Content angesteuert und zur Laufzeit über ob_start() getriggert. D.h., die Tags bleiben immer unverändert im Content erhalten.

    Mein Plugin soll nun auch über Tags gesteuert werden. Wenn nun der Post gespeichert/veröffentlicht wird, sollen meine Tags durch die Tags zum Aufruf des anderen Plugins im Content ersetzt werden.

    Ich dachte da an den save_post action hook.

    Problem:
    Wie benutze ich den, wie schreibe ich den geänderten Content zurück in die Database und wie verhindere ich über dieses "updaten", dass save_post erneut getriggert wird und ein Loop entsteht?

    Habe auch schon im englischen Original-Forum geposted...
    wen es interessiert:

    WordPress › Support » How Can One Parse The Post Contents For A Tag?

    Würde mich über Antworten sehr freuen.

    PS:
    Das RegEx-Problem im obigen Post ist ein ganz anderes.
    Dazu habe ich auch schon wo anders Hilfe gesucht:
    [URL="http://www.phpfreaks.com/forums/index.p…c,195000.0.html"]HowTo Replace A Pseudo-Tag With Text[/URL]

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Wenn Du genau beschreibst, was das Plugin leisten soll und wann es tatsächlich in Aktion treten soll (beim Speichern oder beim Anklicken der Tags im Frontend :confused:), dann kann ich Dir vielleicht weiterhelfen.

    VG Elke

    Es gibt keine dummen Fragen, es gibt nur dumme Antworten...
    http://u-portal.de/

  • Wenn Du genau beschreibst, was das Plugin leisten soll und wann es tatsächlich in Aktion treten soll (beim Speichern oder beim Anklicken der Tags im Frontend :confused:), dann kann ich Dir vielleicht weiterhelfen.

    VG Elke


    Oh.. oops, ich dachte, das könnte man erkennen, sorry.

    Also, ich tippe irgendwo in meinen Post ein bestimmtes Tag ein, wie z.B. "[embed_viewat height=100 width=300 id=1234]". Das soll ein Flash Panorama Image einbetten.

    Dann schreibe ich vielleicht noch was dazu, wie toll das Bild ist. :-)

    Zum Schluss klicke ich entweder auf "Save and continue editing" oder auf "Publish".

    Hier soll das Plugin einschreiten:
    noch bevor der Content in die Datenbank geschrieben wird, soll das Plugin den oben genannten Befehl "[...]" durch einen anderen (Aufruf des anderen Plugins, was dann später mit Filter greift) ersetzen und dann erst den Content in der Datenbank speichern.

    Eine Fehlerbehandlung wäre auch wichtig, soll heißen: wenn mein Plugin nicht richtig aufgerufen wurde, dann bitte eine Fehlermeldung ausgeben und wieder unverändert zurück zum Editieren des Posts...

    Jetzt verständlicher? :-)

    Danke für die Hilfe!

  • Yupp, das war selbst für mich verständlich. ;-)

    Ich habe vor einiger Zeit ein ähnliches Plugin erstellt, das sieht wie folgt aus:


    Das kannst Du ja versuchen nach Deinen Bedürfnissen anzupassen.
    Ansonsten schau Dir doch mal den Code des anderen Plugins an. Vielleicht hilft Dir das auch weiter.

    VG Elke

    Es gibt keine dummen Fragen, es gibt nur dumme Antworten...
    http://u-portal.de/

  • Elke:
    Was genau macht Dein Plugin eigentlich?
    Aber immerhin weiß ich jetzt, dass ich mit $_POST('post_content') an den Inhalt rankomme. Den könnte ich ja dann ändern. Muss ich dann nur noch in etwa sowas ans Ende schreiben:

    PHP
    $_POST('post_content') = changed_post_content;
    return $_POST('post_content');

    ???


    Alphawolf:
    Wäre mir auch lieber, dass zur Laufzeit zu ersetzen, aber ich weiß nicht, wann und wie ich da ansetzen soll, weil mein Plugin ja einen Code ausgibt, der von dem anderen Plugin wieder geparst wird, also muss ich das vorher umwandeln... Das KIMILI plugin benutzt ob_start(). Ich hab keine Ahnung...

    Ich könnte allerdings die Funktion des Plugins selber übernehmen. Es macht im einfachsten Falle ja nichts anderes, als ein JavaScript zu laden und dann eine Klasse zu instanzieren.

    Bekomme ich irgendwie innerhalb meines Plugins raus, ob das andere Plugin vorhanden ist und ob es evtl. bereits das SWFObject (JavaScript) in den Header lädt?

    Ich muss es ja nicht unnötig zweimal laden...

  • Bekomme ich irgendwie innerhalb meines Plugins raus, ob das andere Plugin vorhanden ist und ob es evtl. bereits das SWFObject (JavaScript) in den Header lädt?

    PHP
    if( function_exists('funktionsname') )


    oder

    PHP
    if( class_exists('klassenname') )


    je nachdem was das andere Plugin benutzt. Den Funktionsnamen musst du einfach mit der Funktion des anderen Plugins ersetzen, das den SWObject Code in den Header schreibt.

    wpseek.com - Die WordPress-Code-Suchmaschine

  • Mein Plugin hat (vor WP 2.5) die Leerzeilen, die beim Speichern "gelöscht" wurden, wieder "eingefügt".

    Wenn Du den Tausch erst beim Anzeigen des Textes durchführen willst, dann kannst Du mal Folgendes versuchen:

    PHP
    <?php  add_filter('the_content','meinefunktion');  ?>

    VG Elke

    Es gibt keine dummen Fragen, es gibt nur dumme Antworten...
    http://u-portal.de/

  • Jau, daran hatte ich auch schon gedacht.
    Vielleicht ist es wirklich einfacher, das JavaScript selber einzubetten, als auf zwei Plugins hintereinander aufzubauen...


    Meine Meinung zu JavaScript:
    Wenn es nicht wirklich Not tut und ich auch nicht davon ausgehen kann, dass alle Besucher (meiner Hauptzielgruppe) JavaScript aktiviert haben, dann verzichte ich lieber darauf.

    VG Elke

    Es gibt keine dummen Fragen, es gibt nur dumme Antworten...
    http://u-portal.de/

  • Ich habe gelesen, dass die Einbettung via JavaScript die beste Methode ist, um XHTML-konform zu sein. Alle anderen <object><embed>-blabla-Geschichten sind nicht konform, weil es <embed> eigentlich nicht gibt (siehe auch hier). Außerdem... wer hat denn JavaScript heutztage NICHT aktiviert? :-) Ohne JavaScript würde einiges bei mir sowieso nicht funktionieren...


    Nun, mal sehen, wie ich es mache... immerhin ist das SWFObject 2.0-Script nur so um die 8 kB groß, das geht immer.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!