Intereting Posts
Когда вы должны использовать wp_reset_postdata vs wp_reset_query? Заголовки заголовков темы и изображения ротатора, не назначенные после миграции веб-сайта Добавить описание элементов меню через Custom Walker для wp_nav_menu ()? add_filter ('query_vars') не работает в настраиваемом шаблоне ожидая 404, но перенаправляя сообщение с поддиректорией url в заголовке сообщения Тессерактная детская тема загружается медленно Как я могу получить несколько значений get_post_meta эффективно? wp_list_categories не исключает нескольких идентификаторов Замените Gravatar URL-адресом img для аватаров WordPress WP_User_Query ($ args) с использованием Where and Like Топ-3 сообщения на прошлой неделе, заказанные по счетам в Facebook и Twitter Фильтр «widget_comments_args» не будет работать Создание другой страницы, чем page.php Ошибка анализа: синтаксическая ошибка, неожиданный T_ENDWHILE в Когда налоги зависят от страны, они не отображаются в итогах корзины

Лучшая практика отображения данных для одного конкретного пользователя?

Я пытаюсь создать заблокированную страницу в wordpress (через плагин), которая показывает разные данные, в зависимости от того, кто подписывается. По существу он имеет три экрана, а именно:

  1. Если вы входите в систему как администратор (или кто-то с предоставленными правами администратора), он отображает экран, который имеет информацию и функциональность только для администратора;
  2. Если вы входите в систему как пользователь по умолчанию (созданный администратором), вы попадаете на страницу частной регистрации;
  3. Если вы входите в систему с зарегистрированной учетной записью, вам предоставляется файл-загрузчик.

Способ, которым я это делаю, – с выражением if elseif else ; так: if (current_user_can( 'manage_options' )): 1, elseif ( 2 == $current_user->ID ): 2, else: 3, endif; ,

Что мне интересно, так это то, что способ, которым я называю вторую функцию, – это лучшая практика, или если есть лучший способ сделать это? Спасибо за любую помощь! 😉

Solutions Collecting From Web of "Лучшая практика отображения данных для одного конкретного пользователя?"

Чтобы проверить, является ли пользователь конкретным пользователем, у вас есть 4 варианта:

  • проверьте 'ID'
  • проверьте имя (slug)
  • проверьте электронную почту
  • проверить вход пользователя

Все эти 4 поля уникальны для каждого пользователя.

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

Другие 3 варианта немного (чуть-чуть) лучше: вы можете прокомментировать код до создания пользователя, EG:

 if ( 'standard_user' === $current_user->user_nicename ) { // do something } 

И после этого администратор должен создать пользователя, но не забывайте использовать 'standard_user' качестве пользовательского имени.

Однако, как только вы спросите о лучшей практике, я не могу сказать, что это лучшая практика, потому что ей нужна жесткая кодировка: вы пишете в коде что-то, что для работы нужно администратору при создании типа пользователя определенной строки … и если опечатка случиться? если администратор не помнит точно, какую строку использовать?

Если вы пишете код для себя, это можно использовать без особых усилий, но если вы пишете это кому-то другому (клиенту?) Или планируете распространять свой код, вы должны сделать это по-другому.

Существуют разные возможности, это одно:

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

Предполагая, что пользователь должен быть вкладчиком.

При активации плагина создайте пользовательскую роль, способствующую клонированию .

 function myplugin_install() { $contributor = get_role('contributor'); $standard = add_role( 'standard', 'Standard User', $contributor->capabilities ); } register_activation_hook( __FILE__, 'myplugin_install' ); 

После этого напишите свое предположение следующим образом:

 $user = wp_get_current_user(); if ( user_can($user, 'manage_options') ) { // code for admin } elseif ( in_array( 'standard', $user->roles ) ) { // code for your standard user } else { // code for others } 

Теперь, когда администратор создает стандартного пользователя, вы должны выбрать «Стандартный пользователь» из раскрывающегося списка пользователя.

PS: не забудьте удалить свою настраиваемую роль при отключении плагина:

 function myplugin_unistall() { remove_role( 'standard' ); } register_deactivation_hook( __FILE__, 'myplugin_unistall' );