Intereting Posts
Как удалить связанные таблицы стилей из раздела главы, не удаляя их из каталога тем.? 2 разных пост-> идентификатора для загрузки одной страницы только в Firefox Как конвертировать WordPress в SVN в тот, который не является? Создание области открытого контента и ограниченной области содержимого Стоит ли ограничивать прямой доступ к файлам тем? Заказывать сообщения в соответствии с определенным пользователем порядком для метазначений? Является ли WordPress уязвимым для «комментариев подписи»? Бесконечная прокрутка / ленивая загрузка с Галерея NextGen WordPress сохраняет выборку страницы архива вместо страницы шаблона Сделать глобально доступным с помощью jQuery.noConflict () Сокрытие сообщений от некоторых членов? Я пытаюсь вывести элементы портфеля с изображением. Этот код, похоже, не работает. Что я делаю не так? Вывести значение настраиваемого поля для строки сообщения Добавить Stack Exchange Последние вопросы на боковой панели wordpress? Показать номера страниц категории категорий для более старых сообщений

Действие woocommerce_register_post не срабатывает

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

Однако я не могу проверить новое поле формы, потому что действие woocommerce_register_post , похоже, не срабатывает.

Я попытался заменить это действие на add_filter('woocommerce_registration_errors',… и add_filter('registration_errors',… также, но никто, похоже, не срабатывает.

У кого-нибудь есть понимание?

Это WP 4.2.4 и WC 2.4.3.

Код ниже для справки:

 class Registration { public function __construct() { $this->actions(); } public function actions() { add_action('show_user_profile', [$this, 'admin_customer_code']); add_action('edit_user_profile', [$this, 'admin_customer_code']); add_action('personal_options_update', [$this, 'save_admin_customer_code']); add_action('edit_user_profile_update', [$this, 'save_admin_customer_code']); add_action('woocommerce_register_form_start', [$this, 'registration_form']); add_action('woocommerce_register_post', [$this, 'registration_errors'], 10, 3); add_action('woocommerce_created_customer', [$this, 'user_register']); //add_filter('registration_errors', [$this, 'registration_errors'], 10, 3); //add_filter('woocommerce_registration_errors', [$this, 'registration_errors'], 10, 3); } public function admin_customer_code($user) { $customercode = esc_attr(get_the_author_meta('customer_code', $user->ID)); $r = '<h3>Customer Code</h3> <table class="form-table"> <tr> <th><label for="customer_code">Customer Code</label></th> <td> <input type="text" name="customer_code" id="customer_code" value="' . $customercode . '"> </td> </tr> </table>'; echo $r; } public function save_admin_customer_code($user_id) { update_user_meta($user_id, 'customer_code', sanitize_text_field($_POST['customer_code'])); } //////////////////////////////////////////////////////////////////////////// public function registration_form() { $customercode = (! empty($_POST['customer_code'])) ? trim($_POST['customer_code']) : ''; $r = '<p class="form-row form-row-wide"> <label for="customer_code">' . __('Customer Code', 'textdomain') . ' <span class="required">*</span></label> <input type="text" name="customer_code" id="customer_code" class="input" value="' . esc_attr(wp_unslash($customercode)) . '" size="25" /> </p>'; echo $r; } public function registration_errors($username, $email, $validation_errors) { echo "registration_errors"; var_dump($_POST); exit(); // Never happens :( if (empty($_POST['customer_code']) || ! empty($_POST['customer_code']) && trim($_POST['customer_code']) == '') { $validation_errors->add('customer_code_error', __('<strong>Error</strong>: Please provide your customer code.', 'textdomain')); } return $validation_errors; } public function user_register($user_id) { if (! empty($_POST['customer_code'])) { update_user_meta($user_id, 'customer_code', trim($_POST['customer_code'])); } } } 

Solutions Collecting From Web of "Действие woocommerce_register_post не срабатывает"

woocommerce_register_post срабатывает. Но только если заполнены как электронная почта, так и пароль.

Поэтому размещение ваших дополнительных полей формы перед формой, используя woocommerce_register_form_start , фактически не переносит их в начало для проверки.

Какой-то раздражающий, мне потребовалось слишком много времени, чтобы разобраться, но ты туда.