Я пытаюсь получить http://example.com/site/vendors/?u=abc, чтобы переписать на http://example.com/site/vendors/abc, но я не могу на всю жизнь выяснить как заставить URL перезаписывать работу.
/ site / является корневым каталогом для моей установки / поставщиков WP / является страницей
предполагая, что u
– это пользовательский запрос var, вы должны сначала добавить его в массив распознанных запросов:
function wpa_query_vars( $query_vars ){ $query_vars[] = 'u'; return $query_vars; } add_filter('query_vars', 'wpa_query_vars');
Затем добавьте правило внутреннего переписывания, которое принимает что-либо, добавленное vendors
и передает его как запрос u
var:
function wpa_rewrite(){ add_rewrite_rule( 'vendors/([^/]+)/?$', 'index.php?pagename=vendors&u=$matches[1]', 'top' ); } add_action( 'init', 'wpa_rewrite' );
Обязательно сбросьте правила перезаписи один раз, чтобы это правило было добавлено, вы также можете сделать это, просто посетив страницу « Settings > Permalinks
.
Затем в шаблоне вы можете получить доступ к значению u
через get_query_var()
:
$vendor = get_query_var( 'u' );
Я считаю, что это то, что вы ищете:
RewriteRule ^/site/vendors/([^/]*)$ /site/vendors/?u=$1 [L]