Intereting Posts
wp_enqueue_style с функциями style.php и WordPress Как скрыть сообщение meta Как переопределить механизм рендеринга категорий Как интегрировать статус блога? Рекомендации по доступу к текущим пользовательским данным в WordPress Как показать пункт меню панели управления только пользователям с определенными возможностями? Редактор WordPress на самообслуживаемом блоге не отображает опубликованный текст публикации URL-адреса перезаписи и разбивки на страницы Проблема стиля с пользовательскими меню и подменю Создание представления пользовательской формы – только разрешить им просматривать свои собственные материалы Как применить wordpress 'with_front' = false для категорий? Добавить возможности загрузки файлов, необходимые для пользовательской роли для не-сообщений Как сделать обмен, содержащий категории ссылок? Отображать данные на той же странице, что и форма без обновления. Подтверждение электронной почты комментатору о размещенном комментарии

Если пользователь вошел в систему и имеет оператор эхо-роли

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

У меня есть три роли «администратор» «агентство-усыновление» и «магазин-менеджер», которые я хотел бы показать ссылку на административную область. Затем у меня есть роль под названием «клиент», которую я хотел бы отобразить ссылку на внутреннюю страницу, если клиент вошел в систему, и пользовательская роль совпадает. Я создал код инструкции if else но, похоже, я получаю ошибки.

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

  <?php if ( is_user_logged_in() && (current_user_can('administrator') || current_user_can('shop-manager') || current_user_can('adoption-agency'))) { echo '<p><span>Welcome: </span>' . $current_user->user_login . '</p>'; echo '<p><i class="fa fa-smile-o" ></i> <a href="'. get_admin_url() .'">Post</a></p>'; echo '<p><i class="fa fa-unlock-alt" ></i> <a href="'. wp_logout_url() .'">Logout</a></p>'; }else if( is_user_logged_in() && (current_user_can('customer')){ echo '<a href="' .get_page_link( get_page_by_title( account )->ID ).'">My account</a>'; }else{ //default menu echo wp_login_form(); } ?> 

Ваша проблема в том, что current_user_can() не выполняет роль пользователя. Итак, для проверки администратора, например, вы можете использовать:

 if ( current_user_can( 'manage_options' ) ) { ... } 

потому что обычно администраторы могут управлять опциями.

Вы должны привязать свои пользовательские роли к возможностям, соответствующим их ролям, которые определены для каждой роли при создании с помощью add_role() . Полный список встроенных ролей WP и их соответствующих возможностей см. В кодексе .

Jevuska ответ исправляется ниже детали кода проверяют пользовательскую роль текущего пользователя и отображают контент условно.

 if ( is_user_logged_in() ){ $current_user = wp_get_current_user(); $roles = $current_user->roles; $level = 0; foreach( $roles as $role ){ if( in_array( array( 'administrator', 'shop-manager', 'adoption-agency'), $role ) ){ $level = 1; break; }else if( in_array( array( 'customer'), $role ) ){ $level = 2; break; } } if( $level == 1 ){ echo '<p><span>Welcome: </span>' . $current_user->user_login . '</p>'; echo '<p><i class="fa fa-smile-o" ></i> <a href="'. get_admin_url() .'">Post</a></p>'; echo '<p><i class="fa fa-unlock-alt" ></i> <a href="'. wp_logout_url() .'">Logout</a></p>'; }else if( $level == 2 ){ echo '<a href="' .get_page_link( get_page_by_title( account )->ID ).'">My account</a>'; }//else { // put default leave comment //} }else{ echo wp_login_form(); } 

ИЛИ

 if ( is_user_logged_in() ){ $current_user = wp_get_current_user(); $roles = $current_user->roles; if( in_array( 'administrator', $role ) || in_array( 'shop-manager', $role ) || in_array( 'adoption-agency', $role )){ echo '<p><span>Welcome: </span>' . $current_user->user_login . '</p>'; echo '<p><i class="fa fa-smile-o" ></i> <a href="'. get_admin_url() .'">Post</a></p>'; echo '<p><i class="fa fa-unlock-alt" ></i> <a href="'. wp_logout_url() .'">Logout</a></p>'; }else if( in_array( 'customer', $role ) ){ echo '<a href="' .get_page_link( get_page_by_title( account )->ID ).'">My account</a>'; }//else { // put default leave comment //} }else{ echo wp_login_form(); }