从 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)