首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Woocommerce增加价格

Woocommerce增加价格
EN

WordPress Development用户
提问于 2019-07-10 13:17:37
回答 1查看 87关注 0票数 0

打人,

例如,有没有办法:

产品1价格设置为:50欧元产品2价格设置为:45欧元3价格设置为:20欧元

要将大宗价格添加到所有产品中,例如,如果我设置在价格体系中增加50欧元,则自动将产品价格更改为

产品1价格设置为:100欧元产品2价格设置为:95欧元3价格设置为:70欧元

我知道如何手动或快速编辑产品,但我需要这个选项,如果我想,我可以禁用,价格在默认情况下,然后我允许价格增加,例如+50欧元

EN

回答 1

WordPress Development用户

发布于 2019-07-10 15:26:06

如果您需要在任何时候从标准价格中添加或删除一个金额,您可以在WooCommerce的设置页面中添加一个自定义字段,然后使用内置过滤器修改产品的价格。

下面是我应该如何做到的:(这将在主题的functions.php文件中进行)

代码语言:javascript
复制
/**
 * Add a new tab to WooCommerce settings pages
**/
function add_wc_settings_tabs( $settings_tabs ) {
    $settings_tabs[ 'modify-price' ] = __( 'Modify Price', 'woocommerce' );

    return $settings_tabs;
}
add_filter( 'woocommerce_settings_tabs_array', 'add_my_wc_settings_tabs', 60 );

/**
 * Set up settings fields
**/
function get_my_custom_settings() {
    return array(
        array(
            'title'     => __( 'Amount to add', 'woocommerce' ),
            'desc'      => '
' . __( 'Enter an amount to add to each product price', 'woocommerce' ),
            'id'        => 'price_modification_amount',
            'type'      => 'number',
            'min'       => '0',
            'step'      => '.01',
            'append'    => '€',
        ),
    );
}

/**
 * Outputs settings fields on the Modify Price settings tab
**/
function my_custom_settings_page() {
    woocommerce_admin_fields( apply_filters( 'wc_get_settings_modify-price', get_my_custom_settings() );
}
add_action( 'woocommerce_settings_modify-price', 'my_custom_settings_page' );

/**
 * Update fields in database when page saved
**/
function update_my_custom_settings() {
    woocommerce_update_options( get_my_custom_settings() );
}
add_action( 'woocommerce_update_options_modify-price', 'update_my_custom_settings' );

一旦添加了这些函数,就可以在新创建的“Modify”选项卡下的WooCommerce > Settings中设置一个金额。

最后,要根据此金额调整价格,请再次将此函数添加到functions.php中:

代码语言:javascript
复制
/**
 * Modify price HTML if a modification is set in Settings
**/
function my_custom_price_html( $output, $product ) {
    $adjustment = get_option('price_modification_amount');

    if ( $adjustment ) {
        $output = wc_price( wc_get_price_to_display( $product ) + $adjustment;
    }
    return $output;
}
add_filter( 'woocommerce_get_price_html', 'my_custom_price_html', 30, 2 );

/**
 * Update price in cart if modification set in Settings
**/
function modify_cart_item_price( $cart_item ) {
    $adjustment = get_option('price_modification_amount');

    if ( $adjustment ) {
        $price = $cart_item['data']->get_price() + $adjustment;
        $cart_item['data']->set_price( $price );
        $cart_item['my_price'] = $price;
    }
    return $cart_item;
}
add_filter( 'woocommerce_add_cart_item', 'modify_cart_item_price', 30, 1 );

/**
 * Set correct price when reading cart from session
**/
function get_my_cart_item_from_session( $cart_item, $values, $cart_item_key ) {
    if ( ! empty( $cart_item['my_price'] ) ) {
        $cart_item['data']->set_price( $cart_item['my_price'] );
    }
    return $cart_item;
}
add_filter( 'woocommerce_get_cart_item_from_session', 'get_my_cart_item_from_session', 30, 3 );
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/342573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档