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.

Другие вопросы по тегам