1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Action Hooks bzw. Filter und Funktion gesucht

Dieses Thema im Forum "Plugin-Vorstellung" wurde erstellt von Saphod, 30. April 2008.

  1. Saphod

    Saphod Active Member

    Registriert seit:
    12. Mai 2007
    Beiträge:
    25
    Zustimmungen:
    0
    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:
    HowTo Replace A Pseudo-Tag With Text
     
  2. redcat63

    redcat63 Well-Known Member

    Registriert seit:
    31. März 2006
    Beiträge:
    1.036
    Zustimmungen:
    0
    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
     
  3. Saphod

    Saphod Active Member

    Registriert seit:
    12. Mai 2007
    Beiträge:
    25
    Zustimmungen:
    0
    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!
     
  4. redcat63

    redcat63 Well-Known Member

    Registriert seit:
    31. März 2006
    Beiträge:
    1.036
    Zustimmungen:
    0
    Yupp, das war selbst für mich verständlich. ;)

    Ich habe vor einiger Zeit ein ähnliches Plugin erstellt, das sieht wie folgt aus:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    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
     
  5. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Seit WP 2.5 ist die Shortcode API für dich vielleicht interessant: Shortcode API « WordPress Codex

    Allerdings wird der Tag in die DB geschrieben, und erst beim Output entsprechend umgewandelt. Was ich übrigens für sehr viel handlicher halte als den geeparsten Code in die DB zu schreiben.
     
  6. Saphod

    Saphod Active Member

    Registriert seit:
    12. Mai 2007
    Beiträge:
    25
    Zustimmungen:
    0
    @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:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ???


    @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...
     
  7. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    oder
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    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.
     
  8. Saphod

    Saphod Active Member

    Registriert seit:
    12. Mai 2007
    Beiträge:
    25
    Zustimmungen:
    0
    Stimmt, hatte ich ganz vergessen.

    Ich habe gerade etwas anderes wiedergefunden, was mir evtl. das Laden des Scripts erspart und trotzdem XHTML-konform ist:
    How to correctly insert a Flash into XHTML » La Trine

    Allerdings wäre das Javascript bestimmt die bessere Wahl.
     
  9. redcat63

    redcat63 Well-Known Member

    Registriert seit:
    31. März 2006
    Beiträge:
    1.036
    Zustimmungen:
    0
    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:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    VG Elke
     
  10. Saphod

    Saphod Active Member

    Registriert seit:
    12. Mai 2007
    Beiträge:
    25
    Zustimmungen:
    0
    Jau, daran hatte ich auch schon gedacht.
    Vielleicht ist es wirklich einfacher, das JavaScript selber einzubetten, als auf zwei Plugins hintereinander aufzubauen...
     
  11. redcat63

    redcat63 Well-Known Member

    Registriert seit:
    31. März 2006
    Beiträge:
    1.036
    Zustimmungen:
    0
    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
     
  12. Saphod

    Saphod Active Member

    Registriert seit:
    12. Mai 2007
    Beiträge:
    25
    Zustimmungen:
    0
    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.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden