✨专业 WordPress 开发,定制建站,高效上线,合作即享优化服务!🚀
在 WooCommerce 中“一键清空指定分类的所有产品”,你可以使用以下 PHP 代码实现此功能
// 1. 先定义删除函数
function delete_all_products_in_category($category_slug_or_id) {
$args = [
'post_type' => 'product',
'posts_per_page' => -1,
'post_status' => 'any',
'tax_query' => [
[
'taxonomy' => 'product_cat',
'field' => is_numeric($category_slug_or_id) ? 'term_id' : 'slug',
'terms' => $category_slug_or_id,
]
]
];
$products = get_posts($args);
$deleted = 0;
foreach ($products as $product) {
wp_delete_post($product->ID, true); // 强制永久删除
$deleted++;
}
return $deleted;
}
// 2. 添加菜单
add_action('admin_menu', function() {
add_submenu_page(
'woocommerce',
'清空商品分类',
'清空商品分类',
'manage_woocommerce',
'delete-products-by-category',
'render_delete_products_page'
);
});
// 3. 渲染页面,使用上面定义的函数
function render_delete_products_page() {
$deleted_count = null;
if (isset($_POST['product_cat_slug'])) {
$cat = sanitize_text_field($_POST['product_cat_slug']);
$deleted_count = delete_all_products_in_category($cat);
}
?>
<div class="wrap">
<h1>清空 WooCommerce 分类商品</h1>
<form method="post">
<p>
<label for="product_cat_slug">输入分类 Slug 或 ID:</label><br>
<input type="text" name="product_cat_slug" id="product_cat_slug" style="width:300px;" required>
</p>
<p>
<button class="button button-primary" type="submit">立即删除该分类下所有商品</button>
</p>
</form>
<?php if (!is_null($deleted_count)) : ?>
<div style="margin-top:20px;">
✅ 共删除了 <strong><?php echo $deleted_count; ?></strong> 个商品。
</div>
<?php endif; ?>
</div>
<?php
}