Zurück   WordPress Deutschland Forum > Support > Plugins und Widgets > Plugin-Entwicklung
Registrieren Hilfe Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren Threads ohne Antworten


Antwort
 
Themen-Optionen Ansicht
Alt 30.04.2008, 10:59   #1 (permalink)
Saphod
PostRank: 1
 
Benutzerbild von Saphod
 
Registriert seit: 12.05.2007
Ort: Hannover
Beiträge: 22
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:
HowTo Replace A Pseudo-Tag With Text
__________________
Marco Luthe Online! - http://www.saphod.net
Saphod ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 30.04.2008, 11:24   #2 (permalink)
redcat63
PostRank: 7
 
Registriert seit: 31.03.2006
Beiträge: 795
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 ), dann kann ich Dir vielleicht weiterhelfen.

VG Elke
__________________
http://v-portal.org und http://u-portal.de
redcat63 ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 30.04.2008, 11:46   #3 (permalink)
Saphod
PostRank: 1
 
Benutzerbild von Saphod
 
Registriert seit: 12.05.2007
Ort: Hannover
Beiträge: 22
Zitat:
Zitat von redcat63 Beitrag anzeigen
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 ), 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!
__________________
Marco Luthe Online! - http://www.saphod.net
Saphod ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 30.04.2008, 12:04   #4 (permalink)
redcat63
PostRank: 7
 
Registriert seit: 31.03.2006
Beiträge: 795
Yupp, das war selbst für mich verständlich.

Ich habe vor einiger Zeit ein ähnliches Plugin erstellt, das sieht wie folgt aus:
PHP-Code:
<?php
function eb_posts_speichern()
{
 global 
$user_ID;
 if (!
current_user_can('edit_posts'))
  return 
$_POST['post_content'];
 
$_POST['post_content'] = wp_richedit_pre($_POST['content']);
return 
$_POST['post_content'];
}
add_filter ('content_save_pre','eb_posts_speichern');  
?>
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
__________________
http://v-portal.org und http://u-portal.de
redcat63 ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 30.04.2008, 12:32   #5 (permalink)
Alphawolf
WPD-Moderator
 
Registriert seit: 31.05.2005
Ort: Gera
Beiträge: 1.835
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.
__________________
Erweiterungen
Alphawolf ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 30.04.2008, 13:51   #6 (permalink)
Saphod
PostRank: 1
 
Benutzerbild von Saphod
 
Registriert seit: 12.05.2007
Ort: Hannover
Beiträge: 22
@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-Code:
$_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...
__________________
Marco Luthe Online! - http://www.saphod.net
Saphod ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 30.04.2008, 14:03   #7 (permalink)
Alphawolf
WPD-Moderator
 
Registriert seit: 31.05.2005
Ort: Gera
Beiträge: 1.835
Zitat:
Zitat von Saphod Beitrag anzeigen
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-Code:
if( function_exists('funktionsname') ) 
oder
PHP-Code:
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.
__________________
Erweiterungen
Alphawolf ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 30.04.2008, 14:07   #8 (permalink)
Saphod
PostRank: 1
 
Benutzerbild von Saphod
 
Registriert seit: 12.05.2007
Ort: Hannover
Beiträge: 22
Zitat:
PHP-Code:
if( function_exists('funktionsname'
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.
__________________
Marco Luthe Online! - http://www.saphod.net
Saphod ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 30.04.2008, 14:19   #9 (permalink)
redcat63
PostRank: 7
 
Registriert seit: 31.03.2006
Beiträge: 795
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-Code:
<?php  add_filter('the_content','meinefunktion');  ?>
VG Elke
__________________
http://v-portal.org und http://u-portal.de
redcat63 ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 30.04.2008, 14:24   #10 (permalink)
Saphod
PostRank: 1
 
Benutzerbild von Saphod
 
Registriert seit: 12.05.2007
Ort: Hannover
Beiträge: 22
Jau, daran hatte ich auch schon gedacht.
Vielleicht ist es wirklich einfacher, das JavaScript selber einzubetten, als auf zwei Plugins hintereinander aufzubauen...
__________________
Marco Luthe Online! - http://www.saphod.net
Saphod ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist Aus.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are Aus
Refbacks are Aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:05 Uhr.


Sponsoren:

Powered by vBulletin® Version 3.6.8 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0  — ImpressumEin Inpsyde.com Projekt