IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    WordPress 技巧:如何添加自定义类型的URL的固定链接

    admin发表于 2015-01-07 13:40:24
    love 0

    由于业务需要,偶尔会添加一种页面类型,而这种类型不存在于Wordpress已有的routers 固定链接中, 那么就需要我们来添加一种自定义的URL固定链接。

    比如:
    我需要添加一种/health/A~Z/的URL规则,那么如何自定义呢?
    大体实现如下:
    1. 固定链接URL定义为: /health/A/
    2. 实际URL为:index.php?category_name=&idx=

    实际代码如下:

    # 找到模板目录下面的functions.php 添加下面代码
    function add_query_vars($aVars) {
      $aVars[] = "idx"; 
      return $aVars;
    }
    // hook add_query_vars function into query_vars
    add_filter('query_vars', 'add_query_vars');
    
    function add_rewrite_rules($aRules) {
      $aNewRules = array('(health)/([^/]+)/?$' => 'index.php?category_name=$matches[1]&idx;=$matches[2]');
      $aRules = $aNewRules + $aRules;
      return $aRules;
    }
    
    // hook add_rewrite_rules function into rewrite_rules_array
    add_filter('rewrite_rules_array', 'add_rewrite_rules');

    到这里已经实现自定义URL规则的固定链接。

    那么如何获取URL中的参数呢? 其实知道这是Wordpress自身的路由实现就好明白了。 既然是WP的路由,那么我们就像别的框架一样使用WP的获取URL的参数的访问就可以了。

    在需要获取idx参数值的寂寞中,如下代码就可以得到了:

    #打印所有参数
    var_dump($wp_query->query_vars);
    #取得idx参数和值
    $idx = get_query_var('idx');

    原文参考:

    http://www.4byte.cn/question/475327/why-does-htaccess-mod-rewrite-always-discard-the-query-string-in-the-target-url.html?contrast



沪ICP备19023445号-2号
友情链接