اینجا کد PHP برای حذف خودکار محصولات و تصاویرشون در ووکامرس رو داریم. این کد به شما کمک میکنه وقتی محصولی رو حذف میکنید، تصاویر مرتبط هم از کتابخونه رسانه پاک بشن و فضای هاست پر از فایلهای بدون استفاده نشه.
این کد، تصاویر مرتبط با محصول رو قبل از حذف محصول از ووکامرس پاک میکنه، که باعث میشه نیاز به پاککردن دستی این فایلها از رسانه نداشته باشید.
روش اول: حذف محصول و تصاویر با استفاده از API ووکامرس
این روش مخصوص زمانی هست که میخواید محصولات رو از راه دور و از طریق API حذف کنید. با این کار، میتونید بدون ورود به پنل مدیریت، محصولات و تصاویرشون رو پاک کنید.
کد PHP برای حذف محصول همراه با تصاویرش از طریق API
require 'path/to/woocommerce-api.php';
// مسیر به کتابخونه API ووکامرس رو مشخص کنید
use Automattic\WooCommerce\Client;
// اطلاعات API ووکامرس
$woocommerce = new Client(
'https://yourwebsite.com',
'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // Consumer Key
'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // Consumer Secret
[
'version' => 'wc/v3',
]
);
function delete_product_with_images($product_id) {
global $woocommerce;
try {
// گرفتن اطلاعات محصول
$product = $woocommerce->get('products/' . $product_id);
// پاککردن تصاویر
if (!empty($product->images)) {
foreach ($product->images as $image) {
$image_id = $image->id;
wp_delete_attachment($image_id, true); // حذف دائمی تصویر
}
}
// حذف محصول
$woocommerce->delete('products/' . $product_id, ['force' => true]);
echo "محصول و تصاویرش با موفقیت حذف شدند.";
} catch (Exception $e) {
echo 'خطا: ' . $e->getMessage();
}
}
// مثال استفاده:
delete_product_with_images(123); // شناسه محصولی که میخواید حذف کنید رو اینجا بذارید
روش دوم: حذف محصول و تصاویر بدون استفاده از API ووکامرس
اگر از داخل وردپرس و بدون API میخواید این کار رو انجام بدید، میتونید مستقیماً با استفاده از توابع وردپرس و ووکامرس این کار رو انجام بدید. این روش سادهتر هست و نیازی به API ووکامرس نداره.
کد PHP برای حذف محصول و تصاویرش بدون استفاده از API
/**
* حذف محصول ووکامرس به همراه تصاویر مرتبطش بدون API
*
* @param int $product_id شناسه محصولی که میخواید حذف کنید
*/
function delete_product_with_images_direct($product_id) {
// گرفتن اطلاعات محصول
$product = wc_get_product($product_id);
if (!$product) {
echo "محصول پیدا نشد.";
return;
}
// پاککردن تصاویر
$attachment_ids = $product->get_gallery_image_ids();
foreach ($attachment_ids as $attachment_id) {
wp_delete_attachment($attachment_id, true); // حذف دائمی تصاویر گالری
}
// حذف تصویر اصلی محصول (تصویر شاخص)
$thumbnail_id = $product->get_image_id();
if ($thumbnail_id) {
wp_delete_attachment($thumbnail_id, true); // حذف دائمی تصویر شاخص
}
// حذف محصول
wp_delete_post($product_id, true); // حذف دائمی محصول
echo "محصول و تصاویرش با موفقیت حذف شدند.";
}
// مثال استفاده:
delete_product_with_images_direct(123); // شناسه محصولی که میخواید حذف کنید رو اینجا بذارید
توضیحات:
- پاککردن تصاویر گالری: تابع
get_gallery_image_ids
تمام تصاویر گالری محصول رو برمیگردونه که باwp_delete_attachment
میتونید حذفشون کنید. - حذف تصویر اصلی: با
get_image_id
تصویر شاخص (main image) رو میگیریم و باwp_delete_attachment
اون رو حذف میکنیم. - حذف محصول: در نهایت، از تابع
wp_delete_post
برای حذف دائمی محصول استفاده میکنیم.
هر دو روش کار مشابهی انجام میدن؛ با استفاده از API میتونید از راه دور محصولات رو حذف کنید و در روش بدون API از داخل پنل وردپرس این کار رو انجام بدید. هر دو روش مناسب و کاربردی هستن، بسته به نیازتون میتونید یکی از این دو رو انتخاب کنید.