Ich versuche, eine function in functions.php einzurichten, die ein Bild aus dem post_content beim Speichern entfernt. Alles funktioniert so lange, bis ich versuche, den Inhalt zu speichern, die Seite hängt einfach und ich bekomme den Fehler ‘500 Interner Server’.
function remove_post_image( $post_ID ){ // get the post $the_post = get_post($post_ID); // get the content of the post $post_content = $the_post->post_content; // replace any images $content = preg_replace("/
]+\>/i", "", $post_content); // save the post $my_post = array(); $my_post['ID'] = $post_ID; $my_post['post_content'] = $content; // Update the post into the database wp_update_post( $my_post ); return $post_ID; } add_action('save_post', 'remove_post_image');
Ich fürchte, ich vermisse etwas sehr Grundlegendes. Kann jemand etwas entdecken, was ich falsch mache?
bearbeiten
Ich sehe schon, wie dumm das war. Ich habe Erfolg mit dem Folgenden, möchte aber immer noch wissen, ob das der beste Weg ist? Ich benutze die Aktion content_save_pre …
function remove_post_image( $content ){ // replace any images $content = preg_replace("/
]+\>/i", "", $content); return $content; } add_action('content_save_pre', 'remove_post_image');
content_save_pre
wäre ein viel besserer Hook zum Striping der Bilder und zum Setzen von Post-Thumbnails als Post-Meta können Sie save_post
da der erste Hook gefeuert wird, bevor die Post- update_post_meta
gesetzt wird und Sie diese für update_post_meta
benötigen.
Ihre function ruft wp_update_post()
, die wp_insert_post()
save_post
, die die save_post
Aktion save_post
. Deine function.
Es wäre besser, etwas wie wp_insert_post_data
das Daten filtern soll, und nicht save_post
, um lediglich anzuzeigen, dass Daten bereits verarbeitet wurden.