Настройка пользовательской постоянной ссылки на странице WordPress с переменными URL, получение 404 с набором переменных - PullRequest
0 голосов
/ 25 апреля 2020

Я перепробовал множество ответов на один и тот же вопрос здесь, на stackoverflow, но не могу заставить его работать.

Я собираюсь создать собственный плагин для профиля, используя постоянную ссылку / profile / user. До сих пор я создал страницу под названием «профиль» с шорткодом для моего плагина, который в настоящее время просто печатает имя пользователя из URL. Если я go на website.com/profile?username=test без изменений в функциях. php загрузит плагин и отобразит имя пользователя.

Когда я пытаюсь переписать это в постоянную ссылку, это выдаст мне ошибку 404, однако я могу получить доступ к $ wp-> query_vars ["username"] так, по крайней мере, это работает. Вот код, который я использую, расположенный в функциях. php.

add_filter('rewrite_rules_array','mycode_add_rewrite_rules');
function mycode_add_rewrite_rules($rules){
    $newrules = array();
    $newrules['profile/([^/]+)/?'] = 'index.php?pagename=profile&username=$matches[1]';
    return $newrules + $rules;
}

add_filter('query_vars','mycode_add_rewrite_query_vars');
function mycode_add_rewrite_query_vars($vars){
    array_push($vars, 'username');
    return $vars;
}

Прочитав больше об этом, я также попытался добавить add_rewrite_endpoint в профиль

add_action('init', 'mycode_add_endpoints');
function mycode_add_endpoints()
{
    add_rewrite_endpoint('profile', EP_PAGES);
}

Я также попробовал конечная точка на имени пользователя также безуспешно. Я сбрасывал постоянные ссылки каждый раз, когда вносил изменения.

Стоит отметить, что после добавления кода в функции. php и постоянная ссылка, и обычный URL-адрес выдадут 404.

Что я отсутствует

1 Ответ

0 голосов
/ 25 апреля 2020

В итоге я воспользовался этим руководством: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule#Using_Custom_Templates_with_custom_querystring

Однако, это все равно не сработало, затем я изменил «имя пользователя» на другое имя, и оно сработало. Я не знаю, сработало ли бы это с моим исходным кодом, но я думаю, что так и будет. Вот код, с которым я закончил:

function custom_rewrite_tag() {
    add_rewrite_tag('%unique_username%', '([^&]+)');
}
add_action('init', 'custom_rewrite_tag', 10, 0);


function custom_rewrite_rule() {
    add_rewrite_rule('^profile/([^/]*)/?','index.php?page_id=2634&unique_username=$matches[1]','top');
}
add_action('init', 'custom_rewrite_rule', 10, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...