I'd like to add a filter to Woocommerce product export to add columns but I'd like to add 5 columns using the same hook.
Is it possible to pass the hook name into the filter to allow me to determine which column the data is returned to?
For example, I want to run the following to populate 5 columns using same function (add_export_data) but the returned value would have to be determined by the hook name (containing the col number).
add_filter( 'woocommerce_product_export_product_column_val1', 'add_export_data', 10, 2 );
add_filter( 'woocommerce_product_export_product_column_val2', 'add_export_data', 10, 2 );
add_filter( 'woocommerce_product_export_product_column_val3', 'add_export_data', 10, 2 );
add_filter( 'woocommerce_product_export_product_column_val4', 'add_export_data', 10, 2 );
add_filter( 'woocommerce_product_export_product_column_val5', 'add_export_data', 10, 2 );
So ideally the function would be able to determine the hook name and then choose the relevant data to return as the value.
Thanks
From the 3rd argument, you can get the column ID then you can return the value conditionally.
Here is an example code.
/**
* Return custom columns data.
*
* @param string $value Column value.
* @param WC_Product $product Product object.
* @param string $column_id Column ID.
*
* @return string
*/
function add_export_data( $value, $product, $column_id ) {
switch ( $column_id ) {
case 'val1':
// Get the value from meta or any other way you want.
$value = $product->get_meta( 'product_custom_text', true, 'edit' );
break;
case 'val2':
// Get the value from meta or any other way you want.
$value = $product->get_meta( 'product_custom_text', true, 'edit' );
break;
default:
break;
}
return $value;
}
add_filter( 'woocommerce_product_export_product_column_val1', 'add_export_data', 10, 3 );
add_filter( 'woocommerce_product_export_product_column_val2', 'add_export_data', 10, 3 );
add_filter( 'woocommerce_product_export_product_column_val3', 'add_export_data', 10, 3 );
add_filter( 'woocommerce_product_export_product_column_val4', 'add_export_data', 10, 3 );
add_filter( 'woocommerce_product_export_product_column_val5', 'add_export_data', 10, 3 );