Войти и зарегистрироваться на сайте woocommerce - PullRequest
1 голос
/ 09 мая 2019

Я использую Wordpress 5.2 с Woocommerce 3.6.2. Мне нужно, когда посетитель заходит на сайт, в строке меню посетитель видит варианты «Войти» и «Зарегистрироваться». Когда пользователь регистрируется или входит в систему на сайте, параметры «Вход» и «Регистрация» исчезают, и на сайте отображаются параметры «Моя учетная запись» в виде раскрывающегося меню рядом с параметрами «Корзина», «Завершить покупку», "Выход"

Как мне этого добиться? Я ищу информацию, но пока не даю решения.

1 Ответ

0 голосов
/ 09 мая 2019

Вам нужно расширить свои (дочерние) темы functions.php следующим образом:

function so_loginout_menu_links( $items, $args ) {
   if ( $args->theme_location == 'primary' && function_exists('is_woocommerce') ) {
      if (is_user_logged_in()) {
         $items .= '<li><a href="'. wp_logout_url() .'">'. __("Log Out") .'</a></li>';
         $items .= '<li><a href="'. get_permalink( get_option('woocommerce_myaccount_page_id') ).'">'. __("My Account") .'</a></li>';
      } else {
         $items .= '<li><a href="'. wp_registration_url() .'">'. __("Log In") .'</a></li>';
         $items .= '<li><a href="'. site_url('/wp-login.php?action=register').'">'. __("Register") .'</a></li>';
      }
   }
   return $items;
}
add_filter( 'wp_nav_menu_items', 'so_loginout_menu_links', 10, 2 );

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

«Основной» в вышеприведенном коде может потребоваться заменить на «primary-menu», «top» или как там будет называться первичное навигационное меню вашей темы.

Также убедитесь, что установлен флажок «Администрирование»> «Настройки»> «Основные»> «Членство» «Каждый может зарегистрироваться», в противном случае ссылка может не отображаться.

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

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