Очистка URL-адресов с параметрами в Wordpress - PullRequest
0 голосов
/ 27 мая 2020

У меня есть разрабатываемый мной сайт Wordpress, которому необходимо передавать параметры в URL-адресе. Я дошел до того, что www.example.com/stats/?stat-name работает - он переводит меня на мои страницы статистики. php шаблон, где я могу его обработать.

Мне нужно очистить URL таким образом ? удаляется, и URL-адрес становится www.example.com/stats/stat-name вместо www.example.com/stats/stats/?stat-name

В моих функциях. php, у меня есть:

function add_query_vars($aVars) {
    $aVars[] = "stats";
    return $aVars;
}

// hook add_query_vars function into query_vars
add_filter('query_vars', 'add_query_vars');

В моем .htaccess , у меня

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule  ^stats/^([A-Za-z0-9]+)/$ /stats=$1 [QSA,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Может кто поможет пожалуйста? Спасибо!

1 Ответ

0 голосов
/ 27 мая 2020

Решение было следующим:

Ссылка https://codex.wordpress.org/Rewrite_API/add_rewrite_rule для примера.

В функциях. php:

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

function custom_rewrite_rule() {
    add_rewrite_rule('^stats/([^/]*)/?','index.php?page_id=1385&stats=$matches[1]','top');
  }
add_action('init', 'custom_rewrite_rule', 10, 0);

На страницах статистики. php, затем вы можете сделать:

/**
 * Template Name: Stats
*/
get_header(); 

global $wp_query;
echo 'Stats : ' . $wp_query->query_vars['stats'];

get_footer(); 

Я удалил свое RewriteRule из .htaccess, так как он больше не нужен .

ВАЖНО: вы ДОЛЖНЫ проверить sh и заново создать правила перезаписи в Wordpress (Настройки -> Постоянные ссылки -> Сохранить изменения), чтобы новые URL-адреса работали.

URL-адрес, такой как https://example.com/stats/btts/, будет работать и передавать на страницу параметр статистики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...