Jac*_*Ant 5 url wordpress rewrite themes query-string
我试图将参数传递给wordpress页面.我不想将它作为查询字符串传递.我想以基于斜线的网址传递.
例:
http://localhost/mysite/pagename?user=myname
Run Code Online (Sandbox Code Playgroud)
成
http://localhost/mysite/pagename/myname
Run Code Online (Sandbox Code Playgroud)
如何functions.php
在wordpress自定义主题中使用我的文件来实现这一目的?
jav*_*web 11
通过rewrite_rules_array
似乎是不必要的 - 重写规则杀死/删除比添加规则更多...
functions.php
使用WordPress主题函数(functions.php
),GET
在任何重写规则更改后,有两个步骤将基于斜杠的url作为参数传递给页面:
刷新重写规则==在admin中重新保存永久链接设置!
这可能有点令人困惑,当试图让它工作时,因为文档add_rewrite_rule(...)
不是很清楚目标重写的目标,也不知道如何通过slug定位页面...而且只需要一个重要的注意事项,你需要刷新每当你改变这样的东西时重写规则......
这对我有用(WP 4.3.3)
add_action('init', function(){
add_rewrite_rule(
'^yourPageSlug/([^/]+)([/]?)(.*)',
//!IMPORTANT! THIS MUST BE IN SINGLE QUOTES!:
'index.php?pagename=yourPageSlug&user=$matches[1]',
'top'
);
});
Run Code Online (Sandbox Code Playgroud)
参数/参数:
index.php
(如果它不是外部链接),因为WordPress中的所有URL重写都是通过它来实现的
pagename
GET
参数设置到页面slug$matches[indexStartingFrom1]
的正则表达式匹配-这真的'上还是下'.'top'将优先于WordPress的现有规则,其中'bottom'将首先检查所有其他规则是否匹配.默认值:"bottom"
query_vars
上面的步骤只是一个目标,而不是传递变量本身...
由于WordPress会$_GET
"按原样" 清除参数并将它们扔掉(因为它找不到任何适合它的东西),我们需要告诉 WordPress我们想要通过添加我们的自定义query_vars
来使用它们.
我们仍然无法通过$_GET
超全局检索它们,但是,
我们将能够使用它们get_query_var(...)
我们告诉WordPress我们想GET
通过添加query_vars
过滤器来使用这些参数
add_filter('query_vars', function( $vars ){
$vars[] = 'pagename';
$vars[] = 'user';
return $vars;
});
Run Code Online (Sandbox Code Playgroud)
然后获得GET
参数"用户"使用的价值:
get_query_var( 'user' )
Run Code Online (Sandbox Code Playgroud)
.htaccess
如果可以,你也可以使用.htaccess
规则(考虑,/mysite/
是你的重写基础)
RewriteRule ^pagename/([^/]+)$ pagename?user=$1
Run Code Online (Sandbox Code Playgroud)
这是一个接近的完整教程:http://www.rlmseo.com/blog/passing-get-query-string-parameters-in-wordpress-url/
简而言之,您定义一些新的重写规则,然后通过以下方式将它们挂接到 WordPress 中:add_filter('rewrite_rules_array', 'my_rewrite_rules');
但是,按照该链接的示例,您生成的 URL 将是http://localhost/mysite/pagename/user/myname
- 请注意,仍包含/user/(查询变量的名称)。
归档时间: |
|
查看次数: |
7458 次 |
最近记录: |