Wie kann ich stoppen, wp_update_post HTML-Beispielcode zu vermasseln?

Ich zeige kleine Teile von Beispiel HTML / PHP-Code auf dem Frontend (mit Syntax-Highlighting). Die Einträge werden als benutzerdefinierte FAQ-Posts angezeigt und verfügen über ein Plugin (CMS-Strukturseite), um die Menüreihenfolge zu ändern, in der diese angezeigt werden. Immer wenn ich die Reihenfolge wp_update_post , ruft sie eine wp_update_post , ID wird aktualisiert, menu_order , post_parent , post_type . Zum Debuggen post_content ich die post_content direkt vor der Aktualisierung und direkt danach aus, und sie wird auf schreckliche Weise geändert.

Vorher (richtig):

 [html light="true"]</body>[/html] 

Nach (unordentlich):

 [html light="true"]&lt;/body&gt;[/html] 

Wenn ich es ein paar Mal mache, wird es zur Hölle werden:

 [html light="true"]&amp;amp;lt;/body&amp;amp;gt;[/html] 

Es sieht genau so aus wie htmlspecialchars() mit ENT_NOQUOTES wurde darauf geworfen …

Bitte beachten Sie, dass diese aus der “Quellcode” -Ansicht stammen und nicht aus dem Frontend. Die Browser verarbeiten den Zustand “Before” korrekt und rendern ihn als

  

Wie kann ich verhindern, dass es unordentlich wird?

Solutions Collecting From Web of "Wie kann ich stoppen, wp_update_post HTML-Beispielcode zu vermasseln?"

Es war https://wordpress.org/plugins/syntaxhighlighter/ plugins Fehler. Es gibt einige functionen, die etwas damit zu tun haben, nämlich encode_shortcode_contents_slashed_noquickedit , encode_shortcode_contents_callback .

Jetzt habe ich es auf https://wordpress.org/plugins/crayon-syntax-highlighter/ ersetzt, aber als ich bestätigte, dass das andere Plugin schuld war, hatte ich bereits eine Lösung geschrieben.

 function wpse190396_insert_post_data($data, $postarr){ if($postarr['filter'] == 'db' && ($data['post_type'] == 'fix' || $data['post_type'] == 'faq') && (strpos($data['post_content'],'&lt;') !== false || strpos($data['post_content'],'&nbsp;') !== false || strpos($data['post_content'],'&gt;') !== false )){ $data['post_content'] = htmlspecialchars_decode($data['post_content']); } return $data; } add_action( 'wp_insert_post_data', 'wpse190396_insert_post_data', 10, 2 );