Решение проблемы get_user_meta () в Multisite

В настоящее время я создаю сеть блогов для отдельных агентов по недвижимости. В настоящее время у брокера будет основной сайт, а агенты – в качестве подкаталогов, например, www.example.com и www.example.com/agent. Шаблон front-page.php каждого агента имеет область, отображающую контактную информацию агентов. В настоящее время я использую get_user_meta() в шаблоне темы для доступа к пользовательской информации из профиля пользователя, но я быстро понял, что когда я получаю доступ к этим данным, нет никакого относительного способа доступа пользователя к информации о конкретной субдиректории. Когда я использую этот код:

 echo get_user_meta(2, 'display_name', true); 

в шаблоне темы он по умолчанию устанавливает каждую установку этой темы по всей сети на информацию user_id=2 s. Логически я понимаю, почему. Но как я могу получить информацию Джо на www.example.com/joe и информацию Криса, чтобы появиться на www.example.com/chris? Я ищу решение, которое может быть определено внутри администратора, так что масштабирование этой темы максимально упрощается.

EDIT: Думаю, теперь, когда я думаю об этом, возможным решением было бы создать страницу параметров темы, используя get_option для вызова введенной информации. Я просто надеялся, что есть более простой способ получения информации о пользователе, поскольку некоторые из них уже созданы во время создания пользователя. Если вы думаете, что у вас есть хорошее решение этой проблемы, я думаю, о ней стоит подумать. Таким образом, я не смог найти какую-либо информацию относительно user_meta и multisite.

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

Если вы используете сеть, в которой пользователи зарегистрировались для своих собственных блогов, существует хорошая вероятность, что вы можете использовать элемент 'primary_blog' usermeta для получения необходимой вам информации. Поместите в сетевой активированный плагин следующую функцию:

 function wpse_50705_get_primary_user_for_blog() { global $wpdb; return $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'primary_blog' AND meta_value = %d", get_current_blog_id() ) ); } 

И затем, в вашем файле шаблона,

 echo get_user_meta( wpse_50705_get_primary_user_for_blog(), 'display_name', true ); 

Это должно работать в большинстве случаев, когда у каждого пользователя есть один основной блог – ни у кого нет более одного, и нет блога, который больше, чем один пользователь имеет в качестве основного блога.

Если имя подкаталога всегда будет соответствовать имени пользователя, которое вы хотите отобразить, вы можете сделать это:

 <?php global $current_blog; $username = trim($current_blog->path, '/'); if ($user_id = user_exists($path)) { echo get_user_meta($user_id, 'display_name', true); } else { echo "User not found: $username"; ?>