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

wp_insert_post verschluckt content

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von wepa, 18. Juni 2009.

  1. wepa

    wepa Member

    Registriert seit:
    16. Juni 2009
    Beiträge:
    11
    Zustimmungen:
    0
    Nabend zusammen. Habe folgendes Problem und hoffe es kann jemand helfen:

    In einer Erweiterung meines Wordpress Blogs erlaube ich dem Besucher sich anzumelden und dann über ein Formular Beiträge in Form von eingebetteten Videos zu posten.

    Der Code sieht an entsprechender Stelle so aus:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Funkioniert meistens. Komischerweise habe ich unregelmäßig das Problem, dass in der Datenbank nur noch folgender Post Content ankommt:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Alles andere ist einfach weg. Wiederhole ich das ganze genau so noch einmal und lade identische Daten erneut hoch, ist wieder allles wie es sein soll. Kann mir nicht erklären woran das liegt.

    Hat jemand eine Idee?
     
  2. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Schau mal im Backend nach, von wegen "WP soll falsch verschachteltes XHTML korrigieren" und deaktiviere (z.B. mit dem Role Manager Plugin) die Option "Unfiltered HTML". (Wobei ich das nicht unbedingt empfehlen würde für so ein Vorhaben - sorge lieber dafür, das nur korrektes HTML übergeben wird!)
     
  3. wepa

    wepa Member

    Registriert seit:
    16. Juni 2009
    Beiträge:
    11
    Zustimmungen:
    0
    Danke, für die fixe Antwort. Das habe ich jetzt erstmal gemacht. Bisher funktioniert alles noch - tritt aber leider, wie gesagt, eh nur unregelmäßig auf.

    Im Zweifelsfall werde ich das Role Manager Plugin auch noch testen. Ich gebe Bescheid, wenn sich etwas ergeben hat.
     
  4. wepa

    wepa Member

    Registriert seit:
    16. Juni 2009
    Beiträge:
    11
    Zustimmungen:
    0
    Guten Morgen!

    Das hat leider nichts gebracht, schade. Werde jetzt direkt das Plugin ausprobieren.
     
  5. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Tritt das Phänomen auch bei ein und demselben Autor nur sporadisch auf? Versuch mal irgendwie ein System zu finden, unter welchen Umständen das passiert.
     
  6. wepa

    wepa Member

    Registriert seit:
    16. Juni 2009
    Beiträge:
    11
    Zustimmungen:
    0
    Auch mit dem Plugin und entsprechenden Einstellungen ist der Fehler heute morgen wieder aufgetreten.

    Ja, das Phänomen tritt auch beim gleichen Author auf. Besonders komisch erscheint mir, dass es beim zweiten Versuch, nachdem der Fehler auftritt, immer funktioniert - obwohl das Formular haargenau mit den gleichen Daten gefüttert wird.

    Ich versuche ein System zu erkennen, bin aber noch nicht schlau geworden.
     
  7. wepa

    wepa Member

    Registriert seit:
    16. Juni 2009
    Beiträge:
    11
    Zustimmungen:
    0
    Hat jemand eine Ahnung, welche Filter für die Parameter von wp_insert_post gelten? Kann man die irgendwie alle ausschalten?
     
  8. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Schau mal in die wp-includes/default-filters.php. Abschalten kannst du via Plugin-API.
     
  9. wepa

    wepa Member

    Registriert seit:
    16. Juni 2009
    Beiträge:
    11
    Zustimmungen:
    0
    Habe in der "default-filters.php" die Zeilen 105 bis 109 auskommentiert:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das sollte meiner Einschätzung nach genügen um die Filter für den Content auszuschalten. Fehler trat danach aber wieder auf.

    Langsam macht sich Verzweifelung breit, hilfe! :neutral:
     
  10. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
  11. wepa

    wepa Member

    Registriert seit:
    16. Juni 2009
    Beiträge:
    11
    Zustimmungen:
    0
    Habe mittlerweile das Plugin "Unfiltered MU" getestet, das hat mir leider auch nicht geholfen.

    Jetzt habe ich mir zuletzt die Hooks angesehen, komme damit aber noch nicht ganz zurecht. Folgendes scheint nicht zu funktionieren, da verliert er immer die Session und es gibt keinen neuen Eintrag in der DB:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Kann mir jemand sagen, was ich falsch mache?
     
  12. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Ja, die Hooks sind im Codex leider noch immer nicht besonders gut dokumentiert...

    Welche Session? Ich würde mal auf die Suche nach aussagekräftigen Fehlermeldungen gehen, oder durch Debug-Ausgaben nachschauen, an welcher Stelle es genau knallt.
     
  13. wepa

    wepa Member

    Registriert seit:
    16. Juni 2009
    Beiträge:
    11
    Zustimmungen:
    0
    Ich habe eine eigene Benutzerverwaltung geschrieben, die neben der von Wordpress läuft. Benutzer können sich anmelden, um dann über ein Webinterface Videos zu posten. Hat sich ein Benutzer angemeldet, werden Daten in einer Session gespeichert - das übliche Prinzip.

    Die Benutzer sollen sich nicht am Wordpress Admininterface anmelden können, daher eine separate Benutzerverwaltung.

    Soviel zu den Sessions. Aber was ist denn jetzt mit den Hooks? Ja, du hast Recht, die Doku lässt in dem Punkt noch zu wünschen übrig.

    Verstehe ich das richtig, dass durch ...
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ... wp_insert_post() ohne den Filter "wp_insert_post_data" ausgeführt werden soll? Oder heisst es, dass beim nächsten Aufruf von wp_insert_post() der Filter ausgeschaltet ist, ich die Funktion anschließend also noch zusätzlich aufrufen muss?
     
  14. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Aha, okay. Haken dran und gut. :)


    Richtig. Laut Doku musst du eventuell sogar noch explizit die Priorität des Filters angeben, der bei add_filter() übergeben wird.

    Der Filter wird innerhalb der gepluggten Funktion - hier also wp_insert_post() - ausgeführt. Dort könntest du also mal nachschauen, welche Filter noch aktiv sind. Hier gibts sowas ähnliches für wp_head():
    http://forum.wordpress-deutschland.org/plugins-und-widgets/52874-wie-auflistung-aller-hooks-fuer-z-b-wp_head.html
    Vielleicht hilft dir das.
     
  15. wepa

    wepa Member

    Registriert seit:
    16. Juni 2009
    Beiträge:
    11
    Zustimmungen:
    0
    Muss mich leider schon wieder melden. Sah erst ganz gut aus, aber der Schein trügt manchmal... :neutral:

    Folgendermaßen habe ich jetzt versucht, den naheliegensten Filter abzuschalten:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Bevor ich jetzt weiter nach und nach die Filter abschalte (oder auch nicht), würde mich mal interessieren ob ich das so überhaupt korrekt nutze. Die Doku dazu ist halt irgendwie schlecht und auf eine andere Art und Weise habe ich es bisher nicht hinbekommen, dass überhaupt etwas vom neuen Post in der Datenbank landet. Also, hat jemand Erfahrungen damit? Bin dankbar für jeden Hinweis.
     
  16. wepa

    wepa Member

    Registriert seit:
    16. Juni 2009
    Beiträge:
    11
    Zustimmungen:
    0
    Ist es denn richtig dass hiermit...

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ...für den Aufruf von 'wp_insert_post' in der zweiten Zeile der Filter 'wp_insert_post_data' abgeschaltet wird? Oder hat bei dem was ich mache die erste Zeile keine Auswirkung auf die zweite Zeile? Das müsste doch jemand wissen.

    Strengt euch an und helft mir! ;)
     
  17. wepa

    wepa Member

    Registriert seit:
    16. Juni 2009
    Beiträge:
    11
    Zustimmungen:
    0
    Tag zusammen!

    Ich habe es letztendlich selbst geschafft Wordpress davon abzuhalten mir meine Eingaben zu verpfuschen. Jetzt nehm ich mir endlich die Zeit um hier abschließend meine Lösung zu posten.

    Zuerst habe ich in der kses.php die Zeilen 1072 und 1074 auskommentiert. Für abweichende Versionen - das sind die beiden Filter 'content_save_pre' und 'content_filtered_save_pre' unter dem Kommentar "Post filtering".

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Inwiefern diese beiden Zeilen überhaupt relevant waren bin ich mir im Moment nicht sicher. Ich werde es bei Gelegenheit nochmal testen.

    Nun der wahrscheinlich relevantere Part. In der Datei "default-filters.php" aus dem Verzeichnis "wp-includes" kommentierte ich die Zeilen 105 bis 109 aus (einschließlich).

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das sind alle Filter die den Content betreffen. An dieser Stelle sei erwähnt, dass das nicht im Sinne von Wordpress ist. Es sollte für die meisten Blogbetreiber uninteressant sein. Nur den wenigen unter euch, die es auf ihrem Blog zulassen wollen, dass Besucher der Seite über eigens erstellte Formulare ihren Beitrag zum Seiteninhalt leisten können, kann dieser Thread ein paar graue Haare ersparen.

    Tester und Feedback sind herzlich Willkommen!
    Der Link zur Seite: http://yafb.de (für den Upload ist eine Registrierung erforderlich, jedoch selbstverständlich kostenfrei)

    Danke für die Unterstützung und beste Grüße,
    wepa
     
  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