Создаем кастомную ссылку в WordPress при помощи rewrite rule
Привет, допустим тебе нужно создать кастомную страницу для WordPress на фронте. Например это будет некая ограниченная админка для юзеров. Соответственно тебе нужен уникальный URL, а еще лучше многоуровневый.
Например: /users/dashboard/
Первая часть ссылки это будет наша база. Она не меняется. Вторая часть url может быть что угодно, statistics или dashboard, не важно. Все зависит от того куда хочет попасть наш пользователь. Если это страница статистики или главная админки (если таковые имеются). Третья часть это $_GET атрибуты к примеру user_id (&user_id=$matches[3]) и т.д. В нашем случае оставим user_id.
Делать мы это будем при помощи функции add_rewrite_rule
add_rewrite_rule( '^(users)/([^/]*)/?', 'index.php?page_name=$matches[1]&page_type=$matches[2]&user_id=$matches[3]', 'top' );
Не забываем добавить все это в query_vars при помощи фильтра.
function prefix_register_query_var( $vars ) {
$vars[] = 'page_type';
$vars[] = 'user_id';
$vars[] = 'page_name';
return $vars;
}
add_filter( 'query_vars', 'prefix_register_query_var' );
Теперь нам надо определить, что мы находимся по адресу /users и посмотреть какой тип страницы. Ну и подгрузить какой либо template. Хукаемся на template_redirect и получаем наши переменные из query с помощью get_query_var.
function prefix_url_rewrite_templates() {
if ( get_query_var( 'page_type' ) ) {
echo '<pre>';var_dump(get_query_var( 'page_type' ));echo '</pre>';
echo '<pre>';var_dump(get_query_var( 'page_name' ));echo '</pre>';
echo '<pre>';var_dump(get_query_var( 'user_id' ));echo '</pre>';
}
}
add_action( 'template_redirect', 'prefix_url_rewrite_templates' );
После чего в зависимости от page_type ( page_type === ‘dashboard’ или page_type === ‘statistics’) можем подключить темплейт через фильтр template_include