Как создать динамическую страницу в WordPress?
Я хочу создать что-то похожее на то, как BuddyPress делает страницы участников. Например: http://www.example.com/members/foo
http://www.example.com/members/bar
и т.д.
Я попытался изучить код BuddyPress и увидел, что они не используют пользовательские типы записей или таксономии. Также не похоже, что они используют add_rewrite_rule().
Я хочу реализовать похожую функциональность, где мой плагин будет брать 'foo' из URL и генерировать контент на его основе. Как лучше это сделать?
ОБНОВЛЕНИЕ:
Я следовал инструкциям из этой темы, которая как раз то, что мне нужно: Как создать профиль пользователя с дружественным URL
Вот код:
add_filter( 'query_vars', 'analytics_rewrite_add_var' );
function analytics_rewrite_add_var( $vars )
{
$vars[] = 'analytic'; // Добавляем переменную analytic в массив query_vars
return $vars;
}
function add_analytic_rewrite_rule(){
add_rewrite_tag( '%analytic%', '([^&]+)' ); // Добавляем тег перезаписи
add_rewrite_rule(
'^analytics/([^/]*)/?', // Паттерн URL для перезаписи
'index.php?analytic=$matches[1]', // Куда перенаправлять
'top' // Приоритет
);
}
add_action('init', 'add_analytic_rewrite_rule'); // Вешаем на хук init
add_action( 'template_redirect', 'analytics_rewrite_catch' );
function analytics_rewrite_catch()
{
global $wp_query;
if ( array_key_exists( 'analytic', $wp_query->query_vars ) ) {
include ( get_stylesheet_directory() . '/html/analytics.php'); // Подключаем наш шаблон
exit;
}
}
Однако URL вида /analytics/foo/ все равно возвращает 404 ошибку. Что я делаю не так?

Вот ответ. И на будущее, Дипак, тебе нужно публиковать решение именно как ответ. Вместо этого ты разместил свой ответ в собственном вопросе и затем оставил комментарий об этом. Пожалуйста, не делай так.
function analytics_rewrite_add_var( $vars ) {
$vars[] = 'analytic';
return $vars;
}
add_filter( 'query_vars', 'analytics_rewrite_add_var' );
function add_analytic_rewrite_rule() {
add_rewrite_tag( '%analytic%', '([^&]+)' );
add_rewrite_rule(
'^analytics/([^/]*)/?',
'index.php?analytic=$matches[1]',
'top'
);
}
add_action('init', 'add_analytic_rewrite_rule');
function analytics_rewrite_catch() {
global $wp_query;
if ( array_key_exists( 'analytic', $wp_query->query_vars ) ) {
include ( get_stylesheet_directory() . '/html/analytics.php');
exit;
}
}
add_action( 'template_redirect', 'analytics_rewrite_catch' );

Спасибо, чувак. Возможно, я недостаточно ясно выразился в своем вопросе. У меня была точно такая же проблема: Как создать профиль пользователя на фронтенде с дружественным ЧПУ
Я исправил ее с помощью кода, который вставил в своем вопросе выше. Я забыл сбросить правила, о чем меня попросил MadLem в IRC, и теперь все работает.
Извините за неясность и спасибо, что нашли время ответить :)
