我有一个名为page\\u system的自定义模板文件。php。我在Wordpress中有一个名为“系统”的页面,它使用这个模板。查看此页面的路径为:
www.mysite.com/system/
我想通过Htaces或其他方式,允许我在路径之后添加任何内容,并将其放入get变量中,以便我可以在我认为合适的情况下使用该变量。我希望它忽略最后一个“/”之后的内置Wordpress路径。
例如,
www.mysite.com/system/variable1/variable2
在URL栏中看起来是一样的,但实际上会显示
www.mysite.com/system/?getvariables=variable1/variable2
我尝试编辑。htaccess文件到目前为止还没有工作。我最近的失败尝试是:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^\\/system\\/(.*)$ system/?getvariables=$1 [QSA,L]
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
如果有人能帮助我,我将非常感激!
SO网友:cybmeta
您需要向WordPress添加重写规则。根据您的具体需要,有多种选择。
也许最常用的是add_rewrite_tag()
和add_rewrite_rule()
:
add_action( \'init\', \'cyb_rewrite_rules\' );
function cyb_rewrite_rules() {
add_rewrite_tag( \'%variable1%\', \'([^&]+)\' );
add_rewrite_tag( \'%variable2%\', \'([^&]+)\' );
add_rewrite_rule( ^system/([^/]*)/([^/]*)/?\', \'index.php?pagename=$matches[1]&variable1=$matches[2]&variable2=$matches[3]\', \'top\' );
}
现在,如果URL与regext“system/([^/]
)/([^/])/”匹配,例如:https://example.com/system/value1/value2
WordPress将查询“系统”页面,您可以使用get_query_var()
:$variable1 = get_query_var( \'variable1\' );
$variable2 = get_query_var( \'variable2\' );
两种功能,add_rewrite_tag()
和add_rewrite_rule()
, 是的包装WP_Rewrite
方法。注意:在WordPress中添加新的重写规则后,需要刷新和重建规则集。这可以通过flush_rewrite_rules()
作用此函数只需执行一次数据库操作,这就是为什么在插件激活/停用挂钩中通常使用此函数的原因:
register_deactivation_hook( __FILE__, \'flush_rewrite_rules\' );
register_activation_hook( __FILE__, \'cyb_activation_hook\' );
function cyb_activation_hook() {
flush_rewrite_rules();
}
也可以在“设置->永久链接”中刷新重写规则;只需单击“保存”按钮,即可重建重写。