我有一个正在开发的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>
谁能帮帮我好吗?谢谢!
解决方法如下。
引用 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。 然后将工作并将统计参数传递给页面。