我在本地机器上安装了wordpress: 所以我的home_url是http://localhost/wordpress(没有创建任何虚拟主机条目)
我创建了一个名为test的页面,其中page_id = 19.现在我需要使用重写如下:
当有http://localhost/wordpress/group/abc的任何请求时, 它应该转换为http://localhost/wordpress/?page_id=19&group=abc
我的.htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
#END WordPress
我尝试了什么:
add_action('init', function() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
add_rewrite_rule('^group/([^/]+)', 'index.php?page_id=19&group=abc', 'top');
add_rewrite_tag('%group%', '[A-Za-z]+');
});
但是每当我尝试访问http://localhost/wordpress/group/abc时,我都会收到404错误。
请建议,我做错了。
提前谢谢。
答案 0 :(得分:1)
经过多次重新审视后发现:
所以上面的代码可能看起来像(添加的页面名称是test):
add_filter( 'query_vars', function($query_vars) {
$query_vars[] = 'group';
return $query_vars;
});
add_action('init', function() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
add_rewrite_rule('group/(.*)', 'index.php?pagename=test&group=$matches[1]', 'top');
});
但我们无法通过$_GET['group']
访问群组价值。我们需要通过get_query_var('group')
添加重写规则的另一种方法:
add_action( 'rewrite_rules_array', 'rewrite_rules' );
function rewrite_rules( $rules ) {
$newrules = array();
$newrules[ 'group/(.*)/?$' ] = 'index.php?pagename=test&group=$matches[1]';
return $newrules + $rules;
}