В настоящее время я создаю виджет, чтобы отображать регистрационную форму на веб-сайте WordPress, использующем WooCommerce. На данный момент у меня есть только 3 основных поля: электронная почта, пароль, пароль повторения. Я с нетерпением жду добавления дополнительных полей WooCommerce, но хочу решить эту проблему, прежде чем перейти к следующему шагу.WooCommerce Registration Shortcode - Проблемы с сообщениями об ошибках
У меня возникли проблемы с выходом сообщений (неправильный пароль, учетная запись уже существует и т. Д.).
Я искал в Интернете и не было никакого короткого кода, уже созданного для регистрации WooCommerce, рядом с их страницей регистрации. Поэтому я пошел дальше и создал короткий код с частью шаблона.
function custom_register_shortcode($atts, $content){
global $woocommerce;
$form = load_template_part('framework/views/register-form');
return $form;
}
add_shortcode('register', 'custom_register_shortcode');
Это фрагмент я использую, чтобы получить часть шаблона внутри переменной, так как функция по умолчанию будет «эхо» содержание вместо «возвращения» его.
function load_template_part($template_name, $part_name=null) {
ob_start();
get_template_part($template_name, $part_name);
$var = ob_get_contents();
ob_end_clean();
return $var;
}
Итак, проблема, когда я называю woocommerce_show_messages
или $woocommerce->show_messages();
из моего шаблона части, ничего не отображается, или, если она есть, она показывает в верхней части страницы.
я пытаюсь поставить звонки внутри моей функции SHORTCODE:
function custom_register_shortcode($atts, $content){
global $woocommerce;
$woocommerce->show_messages();
$form = load_template_part('framework/views/register-form');
return $form;
}
add_shortcode('register', 'custom_register_shortcode');
Это, выходное сообщение внутри <head>
тега, который не то, что я хочу.
Я попытался сделать тот же трюк с ob_start()
, ob_get_contents()
и ob_clean()
, но ничего не показал. Переменная будет пустой.
Я тоже пытаюсь зацепить woocommerce_show_messages
к действию, как пилой в ядре:
add_action('woocommerce_before_shop_loop', 'woocommerce_show_messages', 10);
что-то вроде:
add_action('before_registration_form', 'woocommerce_show_messages');
И я добавил это в моем шаблоне -коробь:
<?php do_action('before_registration_form'); ?>
Но мне все еще не удается получить сообщения об ошибках внутри коробки. Он всегда будет вставлен в <head>
Я поделюсь окончательным решением, когда все будет готово.
Спасибо за ваше время,
Julien