Что эквивалентно функции wp_set_password в WooCommerce? - PullRequest
2 голосов
/ 01 апреля 2019

Я обнаружил, что могу настроить функцию wp_set_password и поместить в нее свой код.Но он выполняется только тогда, когда пользователь регистрируется через /wp-login.php.

Это был мой код:

function wp_set_password( $password, $user_id ) {
    // Keep original WP code
    global $wpdb;

    $hash = wp_hash_password( $password );
    $wpdb->update(
        $wpdb->users,
        array(
            'user_pass'           => $hash,
            'user_activation_key' => '',
        ),
        array( 'ID' => $user_id )
    );

    wp_cache_delete( $user_id, 'users' );

    // and now add your own
    $custom_hash = password_hash( $password, PASSWORD_DEFAULT );
    update_user_meta($user_id, 'user_pass2', $custom_hash);
}

Однако я установил WooCommerce и все три основные задачи, касающиеся пароль are:

  • Регистрация,
  • Обновление профиля,
  • Сброс пароля.

Так что этот код мне не помогаетэто, и я искал подобную функцию в WooCommerce, но я не мог ее найти.В любом случае, я могу редактировать WooCommerce, как это, в моем собственном плагине, и какова функция, чтобы сделать это?

1 Ответ

1 голос
/ 01 апреля 2019

Вы должны всегда избегать перезаписи любого файла ядра , так как вы потеряете свои изменения, когда WordPress будет обновлен, и у вас могут возникнуть большие проблемы в этих связанных разумных процессах.

В Woocommerce эквивалентом WordPress wp_set_password() является метод WC_Customer set_password().

Чтобы его можно было подключить, вы можете использовать [WC_Customer_Data_Store][4] Класс связанных крючков , расположенных в update() метод:

  • При создании пользователя, для «Регистрация пользователя», используйте woocommerce_new_customer action hook.
  • В событиях обновления пользователя используйте woocommerce_update_customer action hook
  • В разделе «Регистрация пользователя» (создание пользователя) вы можете использовать woocommerce_new_customer action hook
  • При смене / сохранении пароля в разделе «Моя учетная запись»> «Детали учетной записи» вы также можете использовать woocommerce_save_account_details action hook.
  • Когда пароль будет сброшен, вы можете использовать woocommerce_customer_reset_passwor action hook.

Пример использования WC_Customer set_password() метод:

// Get the WC_Customer instance object from the user ID
$customer = new WC_Customer( $user_id );

// Set password
$customer->set_password( $password );

// Save to database and sync
$customer->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...