WooCommerce-将产品属性添加到CSV导出

时间:2015-08-19 作者:dpruth

我正在尝试自定义WooCommerce CSV Export 插件为两个标准产品属性(“基金”和“上诉代码”)添加额外的列。

我可以添加实际的标题,但无法获取行中的任何数据。下面是我正在尝试的代码:

// add custom column headers
function wc_csv_export_modify_column_headers( $column_headers ) { 

    $new_headers = array(
        \'fund\' => \'fund\',
        \'appeal\' => \'appeal_code\',
        // add other column headers here in the format column_key => Column Name
    );

    return array_merge( $column_headers, $new_headers );
}
add_filter( 
    \'wc_customer_order_csv_export_order_headers\',
    \'wc_csv_export_modify_column_headers\'
);

// set the data for each for custom columns
function wc_csv_export_modify_row_data( $order_data, $order, $csv_generator ) {

    $custom_data = array(
        \'fund\' => wc_get_product_terms( $product->id, \'pa_fund\' ),
        \'appeal\' => wc_get_product_terms( $product->id, \'pa_appeal-code\' ),
        // add other row data here in the format column_key => data
    );

    $new_order_data = array();

    if ( isset( $csv_generator->order_format ) 
      && ( \'default_one_row_per_item\' == $csv_generator->order_format 
        || \'legacy_one_row_per_item\' == $csv_generator->order_format 
      ) 
    ) {

        foreach ( $order_data as $data ) {
            $new_order_data[] = array_merge( (array) $data, $custom_data );
        }

    } else {

        $new_order_data = array_merge( $order_data, $custom_data );
    }

    return $new_order_data;
}
add_filter(
    \'wc_customer_order_csv_export_order_row\',
    \'wc_csv_export_modify_row_data\',
    10,
    3 
);

1 个回复
最合适的回答,由SO网友:dpruth 整理而成

在一位知识更渊博的同事的帮助下,我们成功了。代码如下:

/** Add custom column headers **/
function wc_csv_export_modify_column_headers( $column_headers ) {

    $new_headers = array(
        \'fund\' => \'fund\',
        \'appeal\' => \'appeal_code\',
    );

    return array_merge( $column_headers, $new_headers );
}
add_filter( \'wc_customer_order_csv_export_order_headers\', 
            \'wc_csv_export_modify_column_headers\' );

/** Set the data for each for custom columns **/
function wc_csv_export_modify_row_data( $order_data, $item, $order, $csv_generator ) {

    // Determine the product ID from the SKU, and use that to find the fund and appeal code
    $pid = wc_get_product_id_by_sku($item[sku]);
    $fund = wc_get_product_terms( $pid, \'pa_fund\' );
    $appeal = wc_get_product_terms( $pid, \'pa_appeal-code\' );

    // Add the fund & appeal code to the order_data & return each line
    $order_data["fund"] = $fund[0];
    $order_data["appeal"] = $appeal[0];
    return $order_data;
}
add_filter( \'wc_customer_order_csv_export_order_row_one_row_per_item\',
            \'wc_csv_export_modify_row_data\', 10, 4 );

结束

相关推荐

CSV到WordPress的帖子:我必须填写每个可能的字段吗?

我计划将CSV中的产品导入WooCommerce。我们仍在使用Excel,并在产品的WooCommerce词汇(post\\u标题、post\\u摘录、post\\u内容、sku、regular\\u价格、图像)之后使用产品的主要字段。但是,我们没有ID列,例如comments\\u status或post\\u author。我的想法是,这些字段将由WordPress自动填充,并带有一种“默认值”,但我的问题是,我不确定。我是否必须包含产品(或帖子或页面)的所有字段,以便导入成功?如果是的话,给产品一个