jyoseph
  • 0
Новичок

Удалить изображение из post_content при сохранении_сообщения

  • 0

Я пытаюсь настроить функцию в functions.php, которая удаляет изображение из post_content при сохранении. Все работает до тех пор, пока я не пытаюсь сохранить содержимое, страница просто зависает, и я получаю сообщение об ошибке «500 Internal 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("/<img[^>]+\>/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');

Боюсь, я упускаю что-то очень простое. Может ли кто-нибудь заметить что-то, что я делаю неправильно?


редактировать

Я уже вижу, как глупо это было сделано. У меня есть успех со следующим, но все же хотелось бы знать, лучший ли это способ? Я использую действие content_save_pre…

function remove_post_image( $content ){

  // replace any images
  $content = preg_replace("/<img[^>]+\>/i", "", $content);

  return $content;
}
add_action('content_save_pre', 'remove_post_image');
Share
  1. content_save_pre будет гораздо лучшим хуком для удаления изображений, а что касается установки миниатюры сообщения в качестве мета-сообщения, которое вы можете использовать, save_post поскольку первый хук срабатывает до того, как будет установлен идентификатор сообщения, и вам это нужно для update_post_meta .

    • 0
    • Ха-ха, хорошо, внутренняя ошибка сервера была из-за бесконечных вызовов функций друг друга. Пойду смотреть wp_insert_post_data — спасибо!

      • 0
    • Нашел хорошее решение, используя content_save_pre… Но столкнусь ли я с той же проблемой, если захочу использовать update_post_meta внутри этой функции? Моя конечная цель — я хочу удалить изображение из контента, а затем использовать update_post_meta его для установки избранного изображения.

      • 0
  2. Ваша функция вызывает wp_update_post(), которая вызывает, wp_insert_post() которая запускает save_post действие, которое запускает, угадайте, что? Ваша функция.

    Было бы лучше использовать что-то подобное wp_insert_post_data, предназначенное для фильтрации данных, а не save_post действие, предназначенное просто для указания того, что данные уже обработаны.

    • 0

Оставить ответ

You must login to add an answer.