Сопоставление нескольких URL-адресов с одной и той же страницей
Я только что наткнулся на эту страницу с почти такими же требованиями, как у меня
Несколько конечных точек на одной странице
Мне нужно добиться такой же функциональности, но я также хочу передать некоторые параметры на страницу, где будут отображаться все эти URL-адреса. скажем, пример
http://mysite.com/test/link1
http://mysite.com/test/link2
http://mysite.com/test/link3
Я хочу сопоставить их с одним и тем же URL-адресом
http://mysite.com/test/finalDestination
Вместе с этим я также хочу отправить некоторые другие параметры, такие как
- электронная почта пользователя
- имя пользователя
Итак что я могу использовать их на этой странице для своей пользовательской логики. я знаю, как это сделать в JSP/Java, где я могу отправить их в качестве параметров запроса в POST-запросе и могу повторно получить их в окончательном JSP
Как я могу добиться этого, используя wordpress php.my предпочтения заключаются в том, чтобы не использовать какую-либо строку запроса.
Или это возможно, например, если я создам URL-адрес с помощью
http://mysite.com/test/user1
http://mysite.com/test/user2
http://mysite.com/test/user3
Где пользователь1 и т. Д. Могут быть извлечены из базы данных, и мы можем гарантировать, что они будут уникальными с помощью приложения и сопоставления эти URL-адреса ведут к одной и той же конечной точке. как я могу получить имя пользователя на своей последней странице?
Заранее благодарю
3 answers
Вы можете использовать тот же ответ, что и на вопрос, на который вы ссылались (я ответил на него). Вот как вы изменили бы передачу аргументов:
<?php
add_action('init', 'add_my_rule');
function add_my_rule()
{
global $wp;
$wp->add_query_var('args');
add_rewrite_rule('test\/finaldestination\/(.*)','index.php?pagename=about&args=$matches[1]','top');
}
?>
Предполагая, что "окончательное определение" всегда остается неизменным, а имя страницы (slug) - "о" (вы можете изменить оба). Примените свой пользовательский шаблон к этой странице и в шаблоне сделайте следующее:
//if you visit http://.../test/finaldestination/name/romeo, then $params will be name/romeo. You can explode this and get the value.
$params = get_query_var('args');
После того, как вы поместите этот код в свой файл, просто перейдите к Settings>Permalinks
и нажмите кнопку Сохранить.
Я не пробовал этого, но использовал нечто подобное в недавний проект, и я уверен, что он сработает.
Просто не забудьте добавить канонический URL-адрес в заголовок дубликатов страниц, ссылаясь на основной экземпляр страницы... в противном случае вы получите дублированный контент, что плохо сказывается на SEO (имеет значение только то, являются ли эти страницы общедоступными и индексированными).
Также подошел бы для темы author.php или постоянная ссылка %автор%, если это обычные пользователи WordPress. Вы можете получить доступ к данным примерно так:
$author = get_user_by('slug', $author_name);
$author_id = (int)$author->ID;
$name = $author->first_name.' '.$author->last_name;
Если ваши слова правильно меня поняли, возможные решения здесь:
Для первой части вы можете использовать плагин перенаправления WordPress , чтобы легко удовлетворить ваши потребности.
Для второй части вы можете использовать %author% для структур постоянных ссылок. Ознакомьтесь с кодексом.