В WordPress у меня есть пользовательский сайт регистрации для новых пользователей. После регистрации есть дополнительный флажок, чтобы подписаться на нашу рассылку. Насколько я понимаю, это добавляет значение флажка к таблице user_meta (все это было закодировано компанией в Индии, которую я очень предпочел бы не привлекать снова, так как они откладывали свое рабочее время и время снова и не сделал хорошую работу в конце концов).
Соответствующий фрагмент кода в functions.php моей дочерней темы выглядит так:
<?php echo '<div class="form-row form-row-wide">
<input type="checkbox" name="inter_offers" value="yes"> '; _e('I would like to subscribe to the Kurth Electronic newsletter.','kurth-child'); echo '<br></div>';
return $fields; ?>
add_action('woocommerce_created_customer','adding_extra_reg_fields');
function adding_extra_reg_fields($user_id) {
extract($_POST);
update_user_meta($user_id, 'billing_inter_offers',$inter_offers);
} ?>
(Я пропустил строки, не относящиеся к этой проблеме.)
Теперь это значение сохраняется внутри, но не отображается для меня. Я хотел бы показать значение в электронном письме или уведомлении, сгенерированном WordPress, когда пользователь завершает регистрацию, чтобы мы могли вручную добавить их в наш список рассылки всякий раз, когда кто-то решит подписаться на рассылку. Проблема в том, что у меня ограниченные знания PHP, и я не знаю, с чего начать.
Следует также отметить, что это делается не через стандартную регистрационную форму WorPress, а через регистрационную форму WooCommerce (я отключил стандартную регистрацию WordPress по соображениям безопасности).
Я пытался использовать плагин «Better Notifications» (https://wordpress.org/plugins/bnfw/) для пользовательских уведомлений всякий раз, когда новый пользователь завершает свою регистрацию, но игнорирует любой php-код, который я добавляю в тело пользовательских уведомлений для отображения данных user_meta.
Любая помощь будет оценена.
Поскольку регистрация выполняется через woocomerce, вам, возможно, придется искать плагин уведомлений, который работает с woocomerce, тот, который у вас есть, может просто корректно работать с версией WordPress Core!
Вы также можете генерировать почту через php в функции, так что вы получите сообщение с почтовым адресом пользователя, но я думаю, что без знания php не так просто использовать встроенный почтовый php … (вам может понадобиться API там!)
Но не лучше ли автоматически подписать их в своем программном обеспечении для рассылки? Например, для Mailchimp или других подобных систем есть неплохие плагины для WordPress!
Вы также можете включить формы этих подключаемых модулей в свою регистрационную форму, но без тщательного изучения этой регистрации woocomerce я не могу сказать наверняка!
Я думаю, что это сделает свое дело, оно будет уведомлять вас каждый раз, когда создается новый пользователь, а также сообщать вам, подписались они или нет.
function new_customer_registered_send_email_admin($user_login, $user_email) {
ob_start();
do_action('woocommerce_email_header', 'New customer registered');
$email_header = ob_get_clean();
ob_start();
do_action('woocommerce_email_footer');
$email_footer = ob_get_clean();
$user = get_user_by( 'email', $user_email );
$subscribed = get_user_meta( $user->ID, 'billing_inter_offers', true );
woocommerce_mail(
get_bloginfo('admin_email'),
get_bloginfo('name').' - New customer registered',
$email_header.'<p>The user '.esc_html( $user_login ).' created an account ' . ( $subscribed ? ' and subscribed to the newsletter.' : '.' ) . '<br>Email:'.esc_html( $user_email ).'</p>'.$email_footer
);
}
add_action('new_customer_registered', 'new_customer_registered_send_email_admin', 10, 2);
Я в конечном итоге с помощью плагина пользователи amr создать список пользователей всех пользователей, которым для определенного тега метаданных было присвоено определенное значение (в моем случае, если они хотят получать новостную рассылку — предыдущие разработчики никогда не удосужились сделать данные фактически читаемыми без дополнительных усилий). Это немного неуклюже, чтобы использовать и не то, что я первоначально намеревался, но это сделало работу.