将自定义woocommerce字段添加到wordpress个人数据导出工具

时间:2018-06-24 19:05:27

标签: wordpress woocommerce export field privacy

Wordpress和Woocommerce最近合并了一些更改,以适应GDPR EU关于隐私新要求的指令。

因此,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挂钩将解决此问题。

我们将不胜感激。

0 个答案:

没有答案