Установите флажок в Моем аккаунте WooCommerce "Детали аккаунта" - PullRequest
2 голосов
/ 14 мая 2019

В разделе Моя учетная запись 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 голосов
/ 14 мая 2019

Чтобы ваш флажок работал в разделе Моя учетная запись> Раздел сведений об учетной записи и сохранить значение, вы можете использовать следующее:

// 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 - это один вопрос на тот момент . Так что вам придется задать новый вопрос для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...