在WooCommerce的“我的帐户”“帐户详细信息”中添加一个复选框

时间:2019-05-14 18:27:39

标签: php wordpress woocommerce mailchimp account

在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' ); ?>&nbsp;</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的任何方法吗?

1 个答案:

答案 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 = '&nbsp;<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的规则是一个问题。因此,您将不得不为此提出一个新问题。