在Wordpress中清理带参数的URL

问题描述 投票:0回答:1

我有一个正在开发的Wordpress网站,它需要在URL中传递参数。我已经到了www.example.comstats?stat-name的地步--它把我带到我的stats-pages.php模板,在那里我可以处理它。

我需要做的是清理URL,使其去掉?,URL变成www.example.comstatsstat-name,而不是www.example.comstatsstats?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>

谁能帮帮我好吗?谢谢!

wordpress .htaccess clean-urls
1个回答
0
投票

解决方法如下。

引用 https:/codex.wordpress.orgRewrite_APIadd_rewrite_rule。 的例子。

在functions.php.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);

在stats -pages. php中, 你可以这样做:

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

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

get_footer(); 

我从.htaccess中删除了我的RewriteRule,因为它不再需要了。

重要:你必须在Wordpress中刷新并重新生成重写规则(设置-> Permalinks -> 保存更改),以使新的URLs工作。

一个URL,如 https:/example.comstatsbtts。 然后将工作并将统计参数传递给页面。

© www.soinside.com 2019 - 2024. All rights reserved.