WordPress add_rewrite_rule для входа пользователя в URL

#php #wordpress #mod-rewrite

#php #wordpress #мод-перезапись

Вопрос:

Я хотел бы иметь возможность использовать имя пользователя в своем URL-адресе, а затем использовать его для использования в шаблоне страницы. Вот так:

mywebsite.com/admin/users/user /{пользователь_логин}

Я пробовал следующее, но query_var не добавляется в запрос, и совпадение всегда удаляется из конца URL-адреса, например:

mywebsite.com/admin/users/user/login-name / —> mywebsite.com/admin/users/user/

Я знаю, что происходит перезапись, потому что она успешно переносит меня на страницу «user», но я просто не могу получить логин пользователя вместе с ним.

 /* add query var */

function add_user_query_vars($query_vars){

    $query_vars[] = 'user_login';

    return $query_vars;

}

add_filter('query_vars', 'add_user_query_vars');

/* add rewrite rule */

function add_user_rewrite_rules($rules){

    $user_rules = array('admin/users/user/([a-zA-Z0-9._-] )/?

Спасибо!


Комментарии:

1. Вы пытались перестроить постоянные ссылки? Это может сработать с этим.

2. Да, я удаляю постоянные ссылки, перезагружая страницу постоянных ссылок с панели управления wp.

Ответ №1:

Как насчет того, чтобы сделать это в .htaccess файле?

Добавьте это в .htaccess файл в вашем DOCUMENT_ROOT

 RewriteEngine On
RewriteRule ^admin/users/user/([^/] )/? index.php?pagename=useramp;user_login=$1 [DPI,L]
 

Это предполагает, что mod_rewrite установлен и активирован для файлов htaccess.

Комментарии:

1. Да, та же проблема возникает, если я делаю это через .htacces. Может ли быть другое правило перезаписи WP, переопределяющее его?

2. Находится admin ли папка непосредственно под папкой, в которую вы помещаете .htaccess ?

3. admin - самая верхняя родительская страница. администратор> пользователи> пользователь - все страницы.

Ответ №2:

Понял это!

Вы должны включить полную иерархию страниц в параметр pagename. В моем случае это admin / users / user, поэтому моя перезапись выглядит так, и после сброса правил перезаписи она работает так, как ожидалось.

 $user_rules = array('admin/users/user/([a-zA-Z0-9._-] )/?



=> 'index.php?pagename=useramp;user_login=$matches[1]');

$rules = $user_rules $rules;

return $rules;

}

add_filter('rewrite_rules_array', 'add_user_rewrite_rules');
Спасибо!

Комментарии:

1. Вы пытались перестроить постоянные ссылки? Это может сработать с этим.

2. Да, я удаляю постоянные ссылки, перезагружая страницу постоянных ссылок с панели управления wp.

Ответ №1:

Как насчет того, чтобы сделать это в .htaccess файле?

Добавьте это в .htaccess файл в вашем DOCUMENT_ROOT


Это предполагает, что mod_rewrite установлен и активирован для файлов htaccess.

Комментарии:

1. Да, та же проблема возникает, если я делаю это через .htacces. Может ли быть другое правило перезаписи WP, переопределяющее его?

2. Находится admin ли папка непосредственно под папкой, в которую вы помещаете .htaccess ?

3. admin - самая верхняя родительская страница. администратор> пользователи> пользователь - все страницы.

Ответ №2:

Понял это!

Вы должны включить полную иерархию страниц в параметр pagename. В моем случае это admin / users / user, поэтому моя перезапись выглядит так, и после сброса правил перезаписи она работает так, как ожидалось.


=> 'index.php?pagename=admin/users/useramp;user_login=$matches[1]');

=> ‘index.php?pagename=useramp;user_login=$matches[1]’);

$rules = $user_rules $rules;

return $rules;

}

add_filter(‘rewrite_rules_array’, ‘add_user_rewrite_rules’);Спасибо!

Комментарии:

1. Вы пытались перестроить постоянные ссылки? Это может сработать с этим.

2. Да, я удаляю постоянные ссылки, перезагружая страницу постоянных ссылок с панели управления wp.

Ответ №1:

Как насчет того, чтобы сделать это в .htaccess файле?

Добавьте это в .htaccess файл в вашем DOCUMENT_ROOT


Это предполагает, что mod_rewrite установлен и активирован для файлов htaccess.

Комментарии:

1. Да, та же проблема возникает, если я делаю это через .htacces. Может ли быть другое правило перезаписи WP, переопределяющее его?

2. Находится admin ли папка непосредственно под папкой, в которую вы помещаете .htaccess ?

3. admin — самая верхняя родительская страница. администратор> пользователи> пользователь — все страницы.

Ответ №2:

Понял это!

Вы должны включить полную иерархию страниц в параметр pagename. В моем случае это admin / users / user, поэтому моя перезапись выглядит так, и после сброса правил перезаписи она работает так, как ожидалось.