#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, поэтому моя перезапись выглядит так, и после сброса правил перезаписи она работает так, как ожидалось.