显示在admin Woocommerce产品列表页面中的自定义价格计算

比约嫩

这是为“购买价格”创建自定义字段的尝试,目标是计算产品价格与购买价格之间的差异,并以此方式提供“利润”,在这种情况下称为“净”。

它给我一个错误:“警告:遇到了一个非数字值”,它指的是第115行:

$netwin = $product_standard_cost - $product_purchase_price;

代码如下:

if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {

    if (is_admin()) {
        $url = plugin_dir_url(__FILE__);
        add_action('woocommerce_product_options_general_product_data', 'wppp_add_product_purchase_price_field');
        add_action('woocommerce_process_product_meta', 'wppp_save_product_purchase_price_field', 10, 2);
        add_action('woocommerce_product_after_variable_attributes', 'wppp_add_variable_product_purchase_price_field', 10, 3);
        add_action('woocommerce_save_product_variation', 'wppp_save_variable_product_purchase_price_field', 10, 2);
        add_action('plugins_loaded', 'wppp_load_product_purchase_price_textdomain');
    }
}


function wppp_load_product_purchase_price_textdomain() {
    load_plugin_textdomain('products-purchase-price-for-woocommerce', false, plugin_basename(dirname(__FILE__)) . '/languages/');
}

function wppp_add_product_purchase_price_field() {
    $currency = get_woocommerce_currency_symbol();
    woocommerce_wp_text_input(
          array(
              'id' => '_purchase_price',
              'class' => '',
              'wrapper_class' => 'pricing show_if_simple show_if_external',
              'label' => __("Purchase Price", 'products-purchase-price-for-woocommerce') . " ($currency)",
              'data_type' => 'price',
              'desc_tip' => true,
              'description' => __('Submit the total product purchase cost.', 'products-purchase-price-for-woocommerce'),
          )
    );
}

function wppp_save_product_purchase_price_field($post_id, $post) {
    if (isset($_POST['_purchase_price'])) {
        $purchase_price = ($_POST['_purchase_price'] === '' ) ? '' : wc_format_decimal($_POST['_purchase_price']);
        update_post_meta($post_id, '_purchase_price', $purchase_price);
    }
}


function wppp_add_variable_product_purchase_price_field($loop, $variation_data, $variation) {
    $currency = get_woocommerce_currency_symbol();
    woocommerce_wp_text_input(array(
        'id' => 'variable_purchase_price[' . $loop . ']',
        'wrapper_class' => 'form-row form-row-first',
        'label' => __("Purchase Price", 'products-purchase-price-for-woocommerce') . " ($currency)",
        'placeholder' => 'Submit the product purchase price.',
        'data_type' => 'price',
        'desc_tip' => false,
        'value' => get_post_meta($variation->ID, '_purchase_price', true)
    ));
}

function wppp_save_variable_product_purchase_price_field($variation_id, $i) {
    if (isset($_POST['variable_purchase_price'][$i])) {
        $purchase_price = ($_POST['variable_purchase_price'][$i] === '' ) ? '' : wc_format_decimal($_POST['variable_purchase_price'][$i]);
        update_post_meta($variation_id, '_purchase_price', $purchase_price);
    }
}


add_filter( 'manage_edit-product_columns', 'wppp_add_purchase_price_product_column', 11);
function wppp_add_purchase_price_product_column( $columns )
{
    $columns['_purchase_price'] = __( 'Buy-in Cost','woocommerce');
    return $columns;
}

add_action( 'manage_product_posts_custom_column' , 'wppp_display_purchase_price_in_column', 10, 2 );
function wppp_display_purchase_price_in_column( $column, $product_id )
{
    global $post;
    $purchase_price = get_post_meta( $product_id, '_purchase_price', true );
    switch ( $column )
    {
        case '_purchase_price' :
            echo get_woocommerce_currency_symbol() . $purchase_price;
            break;
    }
}

add_filter( 'manage_edit-product_columns', 'wppp_add_net_winnings_product_column', 11);
function wppp_add_net_winnings_product_column($columns)
{
   $columns['net_winnings'] = __( 'Net','woocommerce');
   return $columns;
}



add_action( 'manage_product_posts_custom_column' , 'wppp_net_winnings_display', 10, 2 );
function wppp_net_winnings_display( $column, $product_id )
{
    global $product;
    $product_purchase_price = get_post_meta( $product_id, '_purchase_price', true );
    $product_standard_cost = $product->get_regular_price();
    $netwin = $product_standard_cost - $product_purchase_price;
    switch ( $column )
    {
        case 'net_winnings' :
            echo get_woocommerce_currency_symbol() . $netwin;
            break;
    }
}


add_filter( "manage_edit-product_sortable_columns", 'wppp_make_purchase_price_column_sortable' );
function wppp_make_purchase_price_column_sortable( $columns )
{
    $custom = array(
        '_purchase_price'    => 'Purchase Price',
        'net_winnings'    => 'Net',
    );
    return wp_parse_args( $custom, $columns );
}

非常感谢您的帮助。

LoicTheAztec

您需要以此替换wppp_net_winnings_display()函数:

add_action( 'manage_product_posts_custom_column' , 'wppp_net_winnings_display', 10, 2 );
function wppp_net_winnings_display( $column, $product_id ){
    if( $column  == 'net_winnings' ) {
        global $product;

        if( ! $product && ! is_object($product) ){
            $product = wc_get_product( $product_id );
        }

        $purchase_price = (float) $product->get_meta('_purchase_price' );
        $regular_price  = (float) $product->get_regular_price();

        $net_winning    = $purchase_price != 0 ? $regular_price - $purchase_price : 0;

        echo wc_price($net_winning);
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Woocommerce单个产品页面中显示高于产品价格的自定义字段

启用向后价格后缀到在WooCommerce中显示自定义产品价格的功能

在WooCommerce产品页面中显示自定义挂钩

如何在自定义页面上按ID号显示Woocommerce产品价格?

在WooCommerce折扣产品上显示自定义价格后缀

在自定义模板中显示WooCommerce产品价格(带折扣)

在Woocommerce 3中用自定义文本替换产品零显示的价格

在简短描述产品WooCommerce中显示带有价格的自定义文本

在Woocommerce Admin产品页面中编辑“自定义产品”选项卡内容

在Woocommerce单个产品页面中显示带有自定义简码的产品数据

在WooCommerce产品页面中显示自定义产品属性值

显示WooCommerce产品价格的自定义简码:以零价格显示文本

从WooCommerce产品页面中的自定义wp_editor页面显示内容

仅在WooCommerce Admin单个订单的手动订单中显示产品自定义字段

仅在WooCommerce Admin单笔订单中显示产品自定义字段

在WooCommerce中显示自定义计算的购物车项目价格

在WooCommerce产品选项编辑页面中,在SKU之前显示自定义字段

在Woocommerce单一产品页面中显示自定义分类法

仅在Woocommerce单个产品页面中显示特定自定义字段值的文本

通过挂钩在WooCommerce单个产品页面中显示自定义字段值

如何在woocommerce的自定义类别页面中显示产品描述

在WooCommerce中的价格显示之前添加自定义文本

WooCommerce:从产品变型中获取自定义字段,并将其显示为变化价格的后缀

在WooCommerce产品上显示每米价格的自定义前缀

在Woocommerce中查找并显示产品自定义字段值

WooCommerce可变产品的产品页面问题上显示的自定义文本字段

如何在WooCommerce订单中显示产品自定义字段(自定义SKU)

可变产品价格未显示在列表和详细信息页面中WooCommerce价格(基于国家)

将产品变体的自定义字段值显示到WooCommerce中的“自定义产品”选项卡