WordPress редирект не работает
add_filter('query_vars', 'add_query_vars');
function add_rewrite_rules($aRules) {
$aNewRules = array('societies/([^/]+)/?$' => 'index.php?pagename=societies&sid=$matches[1]');
$aRules = $aNewRules + $aRules;
return $aRules;
}
add_filter('rewrite_rules_array', 'add_rewrite_rules');
function add_query_vars($aVars) {
$aVars[] = "page_id"; // represents the name of the variable as shown in the URL
return $aVars;
}
add_filter('query_vars', 'add_query_vars');
Поэтому я пытаюсь использовать пользовательскую переменную get при перенаправлении. В настоящее время у меня есть перенаправление, которое приводит вас в раздел моего сайта: zzz.net/dashboard?page_id=2278, например, но я получаю страницу 404 не может быть отображена, поэтому я добавил этот код. Основная проблема в том, что у меня действительно нет лучшего представления о том, что я делаю.
Причина, по которой я хочу иметь? Page_id = 2278 и т. Д. При перенаправлении, заключается в том, чтобы я мог знать, откуда пользователь только что пришел, прежде чем он попал на страницу панели инструментов.
Консультации и указания могут быть более полезными, чем просто ответы. В любом случае, спасибо, что нашли время взглянуть на это.
1 ответ
Переменная GET с именем "page_id" используется ядром Wordpress при запросе любых объектов Page.
И наоборот, если вы измените запрос на "p=2786", Wordpress попытается найти сообщение с идентификатором 2786.
Имея эту переменную в вашем URL, Wordpress запутывается и пытается вернуть страницу, у которой есть идентификатор того, что определено вашим GET-запросом. Чтобы предотвратить подобные конфликты имен, всегда лучше добавить префикс к любым именованным переменным, которые доступны в глобальной области видимости.
Измените имя вашей переменной GET на другое (например, WJ_page_id), чтобы убедиться, что вы не конфликтуете с какими-либо основными переменными Wordpress.