从 WooCommerce 管理员中的所有产品中删除销售价格
Remove Sale Price from all products in WooCommerce admin
正在寻找一种方法来删除 woocommerce 中所有产品的促销价。管理员的视野有限,因此对于拥有超过 10,000 种产品的网站,手动删除促销价格可能是一项非常繁琐的任务。
这可以做到吗?
您可以在产品后台批量修改促销价。
或者您可以暂时将其放入您的 functions.php...加载管理员一次,然后删除。 (未经测试,使用风险自负)
function so_28048702_update(){
// in theory this will grab all variations FIRST
$args = array( 'post_type' => array( 'product','product_variation' ), 'nopaging' => true, 'sortby' => 'post_type', 'order' => 'desc' );
$all_products = new WP_Query( $args );
if ( $all_products->have_posts() ) :
while ( $all_products->have_posts() ) :
$all_products->the_post();
$id = get_the_ID();
update_post_meta( $id, '_sale_price', '' );
$regular_price = get_post_meta( $id, '_regular_price', true );
update_post_meta( $id, '_price', $regular_price );
// we're on a variable product
if( has_term( 'variable', 'product_type', $id ) ){
variable_product_sync( $id );
}
endwhile;
endif;
wp_reset_postdata();
}
add_action( 'admin_init', 'so_28048702_update' );
您只需通过函数文件中的以下代码,就可以从产品中完全删除销售徽章。
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 );
步骤 1: 删除折扣价格数据:
DELETE FROM wp_postmeta WHERE meta_key IN ('_sale_price', '_sale_price_dates_to', '_sale_price_dates_from', '_price');
第 2 步: 根据正常价格插入产品价格
INSERT INTO wp_postmeta SELECT NULL, post_id, '_price', meta_value FROM wp_postmeta WHERE meta_key = '_regular_price';
为什么要查询数据库?
就我而言,我有
SELECT COUNT(*) FROM marin2_postmeta WHERE meta_key = '_price';
+----------+
| COUNT(*) |
+----------+
| 10213 |
+----------+
1 row in set (0.03 sec)
正在寻找一种方法来删除 woocommerce 中所有产品的促销价。管理员的视野有限,因此对于拥有超过 10,000 种产品的网站,手动删除促销价格可能是一项非常繁琐的任务。
这可以做到吗?
您可以在产品后台批量修改促销价。
或者您可以暂时将其放入您的 functions.php...加载管理员一次,然后删除。 (未经测试,使用风险自负)
function so_28048702_update(){
// in theory this will grab all variations FIRST
$args = array( 'post_type' => array( 'product','product_variation' ), 'nopaging' => true, 'sortby' => 'post_type', 'order' => 'desc' );
$all_products = new WP_Query( $args );
if ( $all_products->have_posts() ) :
while ( $all_products->have_posts() ) :
$all_products->the_post();
$id = get_the_ID();
update_post_meta( $id, '_sale_price', '' );
$regular_price = get_post_meta( $id, '_regular_price', true );
update_post_meta( $id, '_price', $regular_price );
// we're on a variable product
if( has_term( 'variable', 'product_type', $id ) ){
variable_product_sync( $id );
}
endwhile;
endif;
wp_reset_postdata();
}
add_action( 'admin_init', 'so_28048702_update' );
您只需通过函数文件中的以下代码,就可以从产品中完全删除销售徽章。
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 );
步骤 1: 删除折扣价格数据:
DELETE FROM wp_postmeta WHERE meta_key IN ('_sale_price', '_sale_price_dates_to', '_sale_price_dates_from', '_price');
第 2 步: 根据正常价格插入产品价格
INSERT INTO wp_postmeta SELECT NULL, post_id, '_price', meta_value FROM wp_postmeta WHERE meta_key = '_regular_price';
为什么要查询数据库?
就我而言,我有
SELECT COUNT(*) FROM marin2_postmeta WHERE meta_key = '_price';
+----------+
| COUNT(*) |
+----------+
| 10213 |
+----------+
1 row in set (0.03 sec)