Чтобы ваш флажок работал в разделе Моя учетная запись> Раздел сведений об учетной записи и сохранить значение, вы можете использовать следующее:
// Remove "(optional)" label for this checkbox
add_filter( 'woocommerce_form_field' , 'remove_optional_fields_label', 10, 4 );
function remove_optional_fields_label( $field, $key, $args, $value ) {
if( 'mc4wp-subscribe' === $key ) {
$optional = ' <span class="optional">(' . esc_html__( 'optional', 'woocommerce' ) . ')</span>';
$field = str_replace( $optional, '', $field );
}
return $field;
}
// Display a custom checkbox in My Account > Account details
add_action( 'woocommerce_edit_account_form', 'display_edit_account_checkbox_field' );
function display_edit_account_checkbox_field() {
woocommerce_form_field( 'mc4wp-subscribe', array(
'type' => 'checkbox',
'class' => array('form-row-wide'),
'label' => __( 'Receive Timenaut newsletter', 'woocommerce' ),
'clear' => true,
), get_user_meta(get_current_user_id(), 'mc4wp-subscribe', true ) );
}
// Save checkbox field value for My Account > Account details
add_action( 'woocommerce_save_account_details', 'save_checkbox_value_to_account_details', 10, 1 );
function save_checkbox_value_to_account_details( $user_id ) {
$value = isset( $_POST['mc4wp-subscribe'] ) ? '1' : '0';
update_user_meta( $user_id, 'mc4wp-subscribe', $value );
}
Код помещается в файл functions.php вашей активной дочерней темы (или активной темы). проверено и работает.
Теперь зарегистрировать / отменить регистрацию подписчика в Mailchimp - это еще один вопрос, и правило Stack OverFlow - это один вопрос на тот момент . Так что вам придется задать новый вопрос для этого.