Intereting Posts
Какие пути использует WordPress для себя в домене? Сортировка пользовательского столбца администратора по значению Имея отдельные плагины и папку тем для настройки нескольких сайтов Воспроизвести видео только на главной странице SELECT-запрос с подготовкой и заполнителем для строки Конвертировать ссылку в WordPress 3.2.1 Не удается войти в панель администратора WordPress … перенаправление на наш сайт проблема с wp-menu nav walker Как настраиваемый шаблон категории на основе категории? Как я могу найти причину сбоя темы Apache в Xampplite? Можно ли восстановить признанные изображения после экспорта / импорта WordPress Удалить строку из базы данных можно ли перемещать базу данных и папку мультимедиа на другой диск? Выберите персонализированные сообщения с помощью meta_value и отсортируйте их с помощью другого мета-значения У вас нет прав для редактирования этого пользователя

Переадресация ссылки на меню на основе имени пользователя или идентификатора пользователя

Я создаю клиентский портал, где мои клиенты могут входить в систему и просматривать все свои ожидающие проекты, завершать проекты и создавать новые проекты.

Хотя я застрял в самом начале.

Выпадающее меню называется «Мои проекты»,
Если «Пользователь 1» зарегистрирован и они нажимают «Мои проекты», мне нужна эта ссылка для ссылки на:
mysite.com/client-portal/my-projects/(USERID or USERNAME)/

Это будет их выделенная страница, поэтому, если имя пользователя пользователя 1 johndoe ссылка будет my-projects/johndoe/

Если пользователь 2 (janedoe) вошел в систему. Когда они нажимают «Мои проекты», они будут приняты my-projects/janedoe/ и т. Д., Так что четвертый.

Так что в основном мне нужно %username% permalink. Я могу добавить ссылку на пользовательское меню, которая изменит %username% с текущим именем пользователя.

Это можно сделать?

Solutions Collecting From Web of "Переадресация ссылки на меню на основе имени пользователя или идентификатора пользователя"

Я думаю, вы можете сделать это намного проще, чем вы. Просто создайте страницу my-projects и забудьте о пользовательском переписывании. Зачем? Потому что пользователю нужно будет только просмотреть свои собственные проекты. Не нужно просто переписывать, потому что вы можете получить текущего пользователя в любое время .

Внедрите рендеринг проекта в короткий код и просто введите его на любую страницу.

 add_action('init', 'wpse105306_add_shortcode'); function wpse105306_add_shortcode() { add_shortcode('wpse105306_projects', 'wpse105306_projects'); } function wpse105306_projects() { $user = wp_get_current_user(); $projects = wpse105306_get_projects_somehow($user); // do stuff with $projects } function wpse105306_get_projects_somehow($user) { // whatever you need here } 

Тем не менее, если вам действительно нужен этот URL-адрес, вам нужно будет выполнить пользовательскую переписку .

 // make the rewrite work add_action('init', 'wpse105306_add_rewrite'); function wpse105306_add_rewrite() { add_rewrite_rule( '^client-portal/my-projects/([^/]+)/?$', 'index.php?wpse105306_portal=$matches[1]', 'top' ); } // make sure WordPress doesn't eat the wpse105306_portal query var add_filter('query_vars', 'wpse105306_add_var'); function wpse105306_add_var($vars) { $vars[] = 'wpse105306_portal'; return $vars } 

Затем задержитесь где-нибудь поздно (например, template_redirect ), и если у вас есть запрос var для портала, выполните проекты клиентов.

 add_action('template_redirect', 'wpse105306_catch_portal'); function wpse105306_catch_portal() { $username = get_query_var('wpse105306_portal'); if (!$username) { return; // things go on as normal } $projects = wpse105306_get_projects_somehow($username); // do stuff with $projects } function wpse105306_get_projects_somehow($username) { // whatever you need here } 

Вы также можете сделать что-то с помощью add_rewrite_tag . Пользовательский переписывать будет означать, что вы должны сделать некоторые другие вещи, чтобы заставить его работать в меню. Подчеркнутый подход означает, что вы можете использовать систему меню как обычно.

WordPress имеет встроенную функцию для получения текущего пользователя:

 <?php wp_get_current_user(); ?> 

Тогда мой подход заключался бы в создании переменной, такой как:

 <?php $userid = wp_get_current_user(); ?> 

Затем в вашем HTML просто сделайте это <a href =userportal?<?php echo $userid ?> >menu <\a>

Затем просто используйте переменную php GET, чтобы получить идентификатор пользователя из URL-адреса, и вы можете использовать его для получения любых сведений, которые вам нужны в отношении пользователя.

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