Wordpress和Woocommerce最近采用了更改,以适应GDPR欧盟关于隐私新要求的指令 .

因此,Wordpress允许在“工具\导出个人数据”中导出有关用户/电子邮件密钥的所有个人数据 . 这将包括woocommerce数据 .

问题是来自Woocommerce的字段是本地字段,它不会添加我为结算数据和发货数据创建的自定义字段 .

因此,当我们使用wordpress功能导出个人数据时,我正在寻找一种方法将缺少的自定义字段添加到woocommerce结算/运输输出中 . 我相信woocommerce有一些钩子允许这个,但我一直无法成功使用它们 .

为了更实际,我附上了一个新的自定义结算字段的示例:

add_filter( 'woocommerce_billing_fields' , 'custom_override_checkout_fields1' );
function custom_override_checkout_fields1( $fields ) {
  $fields['billing_title'] = array(
            'type'      => 'select',
            'label'     => __('Title', 'woocommerce_php'),
            'required'  => false,
            'class'     => array('form-row-wide'),
            'clear'     => true,
            'options'   => $title_sample,
        );
  return $fields;
}

我已经成功地将这个字段添加到wordpress中的'wp_privacy_personal_data_exporters'钩子中,如下所示,但是这个字段与主体分开,可能是因为$ exporters数组的定义 .

add_filter('wp_privacy_personal_data_exporters', 'register_my_plugin_exporter', 10 );
function register_my_plugin_exporter( $exporters ) {

        $exporters['my-plugin-data'] = array(
            'exporter_friendly_name' => __( 'Custom Data' ),
            'callback' => 'my_plugin_exporter_data',
        );

        return $exporters;
    }

function my_plugin_exporter_data( $email_address, $page = 1 ) {
        global $title_sample;
        
        $export_items       = array();
        $user               = get_user_by( 'email', $email_address );
        $user_id            = $user->ID;
        
        $data = array(
            array(
              'name' => __('Billing title', 'woocommerce_php'),
              'value' => get_user_meta( $user_id , 'billing_title', true ) !== '' ? $title_sample[ get_user_meta( $user_id , 'billing_title', true ) ] : '',
            ),
         );
        
        $export_items[] = array(
            'group_id'      =>  'woocommerce_customer',
            'group_label'   =>  __( 'Customer Data', 'woocommerce' ),
            'item_id'       =>  $user_id,
            'data'          =>  $data,
        );
        
        // Tell core if we have more comments to work on still
        return array(
            'data' => $export_items,
            'done' => true,
        );
    }

需要明确的是,当我说它分开时,我的意思是:

enter image description here

我打赌,使用适当的woocommerce钩子将解决这个问题 .

非常感谢帮助 .