WP Cron speichert oder nicht in post body

Ich verwende wp_cron , um Posts von einer entfernten Website wp_cron zu wp_cron und sie in meiner wp db zu speichern.

BEACHTEN! Ich führe meinen Code von meinem Plugin aus, nicht von meiner Vorlage functions.php oder woanders. Ich habe meine eigene validation von gepackten Inhalten, um bösartigen Code usw. zu verhindern. Daher ist das Deaktivieren der Sicherheitsvalidierung in WordPress kein Problem in meinem Fall, aber seien Sie vorsichtig, wenn Sie keine eigene validation von gepackten Inhalten haben. Überprüfen Sie gegriffene Werte immer wenn möglich!

Ich habe in meinem Plugin einen Button, um Beiträge manuell zu erfassen, indem man auf diesen Button klickt und es funktioniert einwandfrei. Alles ist so gespeichert, wie ich es möchte in meiner database. Kein Problem hier.

aber dann habe ich eine wp_cron function, die alle zwei Minuten zu Testzwecken läuft (wenn jemand auf meine Seite klickt; natürlich;) und hier ist ein Problem.

Beachten Sie, dass der Code identisch ist, anstelle von get_user_id() setze ich ihn manuell auf 1 . Das ist wahrscheinlich die einzige Änderung zwischen diesen beiden Codes.

Und das Problem ist, dass alles wie erwartet gespeichert wird, einschließlich Zeit, Titel, Slug (es wird sogar gegriffen und runtergeladen und das vorgestellte Bild für den Beitrag korrekt gesetzt), Tags, Kategorien und zusätzliche Taxonomie. Also gut.

Nur was fehlt, ist der Fließtext (Inhalt) des Posts.

Beim manuellen Herunterladen vom Administrator. Es ist etwas wie:

  

oder

  

Also, weil es gefiltert und gestreift ist, meine ich object und iframe wenn nicht als Admin eingeloggt?

Wenn ja, wie kann ich es in meinem Plugin ausschalten?

Oder ist es etwas anderes?

Ich denke wirklich, dass es nur etwas mit dem Sicherheitsproblem von WP ist, weil der Code funktioniert, wenn er manuell von admin als Admin ausgeführt wird. Und der Code der function ist der gleiche und alle Variablen werden wie erwartet übergeben. Nur Inhalte werden nicht gespeichert.

BEARBEITEN:

Es ist definitiv etwas mit der WP-Sicherheit . Wenn ich die Inhaltsvariable für die Autocron-function manuell auf “Test auto save” (Automatisch testen) einstelle. Das ist normal gespeichert. Aber wenn ich es auf something oder blablabal , ist es NICHT.

Wie deaktiviere ich dieses “checking”, damit ich meinen Code mit cron speichern kann?

Irgendeine Idee?

Solutions Collecting From Web of "WP Cron speichert oder nicht in post body"

Anstatt die Sicherheitsfilter manuell zu entfernen, sollten Sie einfach den richtigen Benutzer für diese processe festlegen.

Wenn Sie angemeldet sind und einen process manuell ausführen, sind Sie angemeldet, und Sie müssen Ihre Anmeldeinformationen verwenden und Ihre Berechtigungen verwenden. Ich wette, Sie sind ein Administrator auf der Website. Sie haben die Berechtigung, ungefiltered_html zu posten, was bedeutet, dass Sie Iframes und Objekte und was auch immer Sie möchten veröffentlichen können.

Wenn Ihr Cron-Job ausgeführt wird, verfügt er nicht über Ihre Anmeldeinformationen. Es erhält also nicht dieselben Berechtigungen. So werden die Sicherheitsfilter eingeschaltet und Dinge wie iFrames und dergleichen werden blockiert.

Um das Problem zu beheben, müssen Sie Ihren process so ändern, dass die Filter nicht deaktiviert, sondern wie Sie ausgeführt werden . So finden Sie Ihre Benutzer-ID-Nummer in der database und fügen Sie diesen Code kurz vor dem process hinzu, um den Import auszuführen:

wp_set_current_user( 123 );

Wo “123” ist, was auch immer Ihre Benutzer-ID-Nummer ist. Dann ist der Code nun “Sie” und kann Dinge tun, so wie Sie es tun würden. Diese Filter werden nicht wirksam, da die Berechtigungen für den aktuellen Benutzer korrekt sind.

Hinweis: Dies ist nicht sicherer, BTW. Sie erlauben immer noch einer entfernten Website, möglicherweise gefährliche Dinge auf Ihre zu setzen. Sie vertrauen also darauf, dass sie Sie hier nicht vermasseln. Denken Sie nur daran. Diese Methode ist einfach einfacher als manuell mit den Filtern zu experimentieren.

WARNUNG !!!

Überprüfen Sie immer die Daten, die Sie in der database speichern! Diese Antwort geht davon aus, dass Sie den Inhalt Ihres Beitrags innerhalb Ihrer benutzerdefinierten function, die Sie über cron auslösen, validieren.

Ich finde eine Lösung für dieses Problem des Entfernens von iframe- und Objekt-Tags.

BEACHTEN! Setzen Sie dies nur in den functionscode Ihres Plugins, der über wp cron ausgeführt wird. Legen Sie es nicht in Ihre function.php in Ihrer Vorlage oder an anderen Stellen.

 // before saving post remove_filter('content_save_pre', 'wp_filter_post_kses'); remove_filter('content_filtered_save_pre', 'wp_filter_post_kses'); // save code here // after saving post add_filter('content_save_pre', 'wp_filter_post_kses'); add_filter('content_filtered_save_pre', 'wp_filter_post_kses'); 

WICHTIG! Mit dem Präfix content_ begrenzen wir den remove filter -> save our data -> add_filter proces nur auf den Inhalt und nicht auf comments, excerpt etc.

Verwenden Sie Shortcodes, zB erstellen Sie einen iframe-Shortcode, dann könnten Sie Folgendes tun:

 [iframe]example.com[/iframe] 

Hier ist Code, um einen solchen Shortcode zu implementieren:

 add_shortcode('iframe', array('iframe_shortcode', 'shortcode')); class iframe_shortcode { function shortcode($atts, $content=null) { extract(shortcode_atts(array( 'url' => '', 'scrolling' => 'no', 'width' => '100%', 'height' => '500', 'frameborder' => '0', 'marginheight' => '0', ), $atts)); if (empty($url)) return ''; return ''; } } 

Verwendung:

 [iframe url="http://wpsnipp.com" width="100" height="100" scrolling="yes" frameborder="1" marginheight="2"] 

Quelle:

http://wpsnipp.com/index.php/functions-php/iframe-shortcode-for-posts-and-pages/

Wenn Sie Objekteinbettungen einfügen müssen, ist etwas falsch gelaufen. Verwenden Sie OEmbed oder erstellen Sie einen Shortcode

Nachdem ich alles versucht hatte, funktionierte das für mich:

 global $allowedposttags; $allowedposttags['div'] = array('align' => array (), 'class' => array (), 'id' => array (), 'dir' => array (), 'lang' => array(), 'style' => array (), 'xml:lang' => array() ); $allowedposttags['iframe'] = array('src' => array () ); 

https://wordpress.org/support/topic/wp_update_post-strips-css-id-attribute?replies=7