WooCommerce中有一项功能可以隐藏商店中的缺货产品。但是,此功能仅在我使用本机WooCommerce短代码时才有效,如果正在使用其他插件在网站的其他部分显示产品,则此功能无效。
所以,我认为废弃该产品将是一个更好的方式摆脱Out Of Stock产品。 我不希望永久删除,以防我想让工作更轻松,并在将来恢复这些产品,但如果没有别的办法,我会欢迎它。
我只是在学习一点PHP。如果您有任何想法,请告诉我。
答案 0 :(得分:0)
在WordPress中,所有的东西都被视为不同的帖子
post_type
,所以每当帖子/产品更新save_post
时都是如此 调用。
function wh_trashOutOfStockProduct($post_id, $post, $update) {
$post_type = get_post_type($post_id);
// If this isn't a 'product' post, don't update it.
if ('product' != $post_type)
return;
$product = wc_get_product($post_id);
//if product is Out of Stock trash it
if (!$product->is_in_stock()) {
wp_trash_post($post_id);
}
}
add_action('save_post', 'wh_trashOutOfStockProduct', 10, 3);
代码进入您的活动子主题(或主题)的function.php
文件。或者也可以在任何插件php文件中。
<小时/> <强>已更新强>
add_action('wp', 'wh_trashAllProductOnce');
function wh_trashAllProductOnce()
{
$params = [
'posts_per_page' => -1,
'post_type' => 'product'
];
$wc_query = new WP_Query($params);
if ($wc_query->have_posts()) :
while ($wc_query->have_posts()) :
$wc_query->the_post();
$product_id = get_the_ID();
$product = wc_get_product($product_id);
//if product is Out of Stock trash it
if (!$product->is_in_stock())
{
wp_trash_post($product_id);
}
endwhile;
wp_reset_postdata();
else:
_e('No Products');
endif;
}
在活动主题functions.php
文件中添加上述代码并运行您的网站只删除上述代码,它会删除所有缺货产品
如果您希望将代码保留更长时间,请减少查询和执行时间。
add_action('admin_init', 'wh_trashAllProductOnce');
function wh_trashAllProductOnce() {
$current_user = wp_get_current_user();
//if loggedin user does not have admin previlage
if (!user_can($current_user, 'administrator')) {
return;
}
$params = [
'posts_per_page' => -1,
'post_type' => 'product',
'post_status' => 'publish'
];
$wc_query = new WP_Query($params);
if ($wc_query->have_posts()) :
while ($wc_query->have_posts()) :
$wc_query->the_post();
$product_id = get_the_ID();
$product = wc_get_product($product_id);
//if product is Out of Stock trash it
if (!$product->is_in_stock()) {
wp_trash_post($product_id);
}
endwhile;
wp_reset_postdata();
endif;
}
在活动主题functions.php
文件中添加上述代码,每当管理员登录仪表板并访问任何后端页面时,都会触发此功能。
请注意:建议使用上述任何一种方法 只有一次,或者只需要取消注释功能使用 它然后再评论它。
希望这有帮助!
答案 1 :(得分:0)