在WooCommerce我的帐户>帐户详细信息部分中,我已经能够添加带有以下代码的复选框:
<div class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide woocommerce-form-row-newsletter">
<label for="account_email" class="checkboxLabel"><?php esc_html_e( 'Receive Timenaut newsletter', 'woocommerce' ); ?> </label>
<div class="woocommerce-MyAccount-settings">
<?php
woocommerce_form_field( 'mc4wp-subscribe', array(
'type' => 'checkbox',
'class' => array('form-row-wide')
), $value = 1);
?>
</div>
</div>
我已将其添加到form-edit-account.php中,该复选框显示正确,但是很明显它没有保存该值。
如何正确保存复选框值?
现在,我还要将订阅者添加到MailChimp列表中。
您知道不使用任何插件将其发送到Mailchimp的任何方法吗?
答案 0 :(得分:0)
要使“我的帐户”>“帐户详细信息”部分中的复选框起作用并保存值,您可以使用以下内容:
// 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的规则是一个问题。因此,您将不得不为此提出一个新问题。