Wordpress - 将查询字符串作为基于斜杠的 URL 传递

标签 wordpress url themes rewrite query-string

我正在尝试将参数传递给 wordpress 页面。我不想将它作为查询字符串传递。我想作为基于斜杠的 url 传递。

例子:

http://localhost/mysite/pagename?user=myname

进入
http://localhost/mysite/pagename/myname

如何使用我的 functions.php 实现此目的? wordpress 自定义主题中的文件?

最佳答案

正在经历 rewrite_rules_array 似乎不需要 - 重写规则杀死/删除比添加规则更多......

使用 functions.php
使用 WordPress 主题函数 ( functions.php ),有 2 个步骤将基于斜杠的 url 传递为 GET任何重写规则更改后的页面参数:
刷新重写规则 == 在管理员中重新保存永久链接设置!

第 1 步 - add_rewrite_rule(...)

当试图让它工作时,这可能有点令人困惑,因为 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'
   );   
});

参数/参数:
  • 正则表达式(“regexp”)匹配特定的 url 结构
  • 重写你应该定位到的模板index.php (如果它不是外部链接),因为 WordPress 中所有的 url 重写都是通过它来的
  • 使用 pagename GET参数设置为您的页面 slug
  • 使用占位符 $matches[indexStartingFrom1]对于正则表达式匹配 - 真正的 只是一个占位符! ==> 使用单引号包裹这个字符串!
  • 'top' or 'bottom'. 'top' will take precedence over WordPress's existing rules, where 'bottom' will check all other rules match first. Default: "bottom"


  • 第 2 步 - add query_vars

    上面的步骤只是一个目标,而不是传递变量本身......

    由于 WordPress 会清除 $_GET参数“按原样”扔掉(因为它找不到任何适合它的东西),我们需要通过添加我们的 custom query_vars 来告诉 WordPress 我们想要使用它们。 .

    我们仍然无法通过 $_GET 检索它们超全局,但是,我们将能够使用 get_query_var(...) 获取它们

    我们告诉 WordPress 我们想要使用那些 GET通过添加 参数query_vars 筛选
    add_filter('query_vars', function( $vars ){
        $vars[] = 'pagename'; 
        $vars[] = 'user'; 
        return $vars;
    });
    

    最后一步:刷新重写规则 == 保存永久链接设置!

    用法

    然后得到 GET 的值参数“用户”使用:
    get_query_var( 'user' ) 
    

    使用 .htaccess
    如果可以,也可以使用.htaccess规则(考虑到 /mysite/ 是您的重写基础)
    RewriteRule ^pagename/([^/]+)$  pagename?user=$1
    

    关于Wordpress - 将查询字符串作为基于斜杠的 URL 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29076665/

    相关文章:

    php - 检查字符串是否包含 youtube URL

    android - 使用带有默认 Android 主题的自定义 ListView 适配器

    javascript - 在 Javascript 中查找请求 URL

    java - 在 Peference Activity 内,创建要为应用程序启用的主题 ListView

    android - 如何通过覆盖应用程序样式来隐藏特定 Activity 样式中的标题栏

    javascript - 如何使用自定义帖子类型创建 WordPress 视频库

    php - 如何在非 WordPress php 文件中包含 WordPress 页眉和页脚

    html - 奇怪的 iframe 添加到名为 `rufous-sandbox` 的正文标签中

    php - 与get_the_terms()重复的术语

    java - 无法下载内容类型为 text/html 的文件