Wordpress Woocommerce, как удалить изображение из файловой системы при его удалении в продуктеPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Wordpress Woocommerce, как удалить изображение из файловой системы при его удалении в продукте

Сообщение Anonymous »

У меня есть сайт, на котором внешний API получает товары для моего магазина Woocommerce, и API отправляет много изображений для некоторых продуктов, поэтому я вручную захожу в публикацию о продукте и удаляю некоторые из этих изображений.
Как мне добиться, чтобы при этом эти изображения удалялись как из медиатеки, так и из папки с файлами?
Я уже придумал, как их удалить, когда я удалить товар...
Проблема в том, что я, например, создаю товар с 15 изображениями, затем удаляю 5 из них, храню товар в своем магазине в течение полугода и затем удалите продукт, но тогда будут удалены только 10 изображений, все еще связанных с продуктом, и со временем у меня останется много неиспользуемых изображений...
Так как я могу удалить изображения навсегда когда я удаляю их через страницу продукта в Woocommerce.. (маленький крестик на изображении)
Надеюсь, это имеет смысл :-)
ОБНОВЛЕНИЕ :
Я исследовал и так далее, чтобы получить идентификатор галереи изображений продукта.
Пытаюсь
add_action ('save_post', 'my_function')
add_action ('woocommerce_update_product', 'my_function')
add_action ('post_updated', 'my_function')

Моя цель состоит в том, чтобы получить массив идентификаторов изображений продуктов из галереи изображений как до обновления, так и после обновления, а затем выполнить для них array_diff(), а затем выполнить wp_delete_attachment( $delete, $force_delete = true );
на них, и я получил идентификаторы галереи изображений, но, похоже, не могу получить одновременно старые и новые значения.
Работаю
Где-то читал, что хук woocommerce_update_product
на самом деле выполняется дважды, поэтому, вдохновленный другим умным постом, я использовал глобальные значения для хранения значений до и после :-)< /p>
add_action( 'woocommerce_update_product', 'action_save_product_data', 10, 2);
function action_save_product_data( $post_id, $product ) {

// Specify the post type on which to run
if ( 'product' == get_post_type() ) {
global $previous_product_id;
global $before;

if($previous_product_id === $post_id) {
$after = wc_get_product( $post_id )->gallery_image_ids;
}

if($previous_product_id === $post_id) {
null;
}
else {
$before = wc_get_product( $post_id )->gallery_image_ids;
}

if($previous_product_id === $post_id) {
$images_to_be_deleted = array_diff($before, $after);
foreach($images_to_be_deleted as $delete) {
wp_delete_attachment( $delete, $force_delete = true );
}
}
$previous_product_id = $post_id;
}
}


Подробнее здесь: https://stackoverflow.com/questions/777 ... lete-it-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»