【问题标题】:What is the proper way to use add_rewrite_rule to remove the (question mark)?使用 add_rewrite_rule 删除(问号)的正确方法是什么?
【发布时间】:2013-04-03 20:11:18
【问题描述】:

我有一个名为“People”的页面,其中包含一个自定义模板,该模板接受一个名为 name 的变量:

example.com/people/?name=FirstLast

我想要的是这个:

example.com/people/FristLast

我知道我需要使用 add_rewrite_rule 和 add_rewrite_tag 调用,但我不确定如何达到我想要的结果。我已经尝试过了,但是我得到了一个 php 错误:

add_rewrite_rule('^people/([^/]*)/?','index.php?name=$matches[1]','top');
add_rewrite_tag('%name%','([^&]+)');

我得到的错误是:“致命错误:在非对象上调用成员函数 add_rule()”

我认为我走在正确的道路上。我对 WP 非常了解,但这是我第一次尝试重写规则。

谢谢!

【问题讨论】:

    标签: wordpress url-rewriting rewrite


    【解决方案1】:

    试试

    add_action( 'init', 'addMyRules' );
    function addMyRules(){
        add_rewrite_rule('^people/([^/]*)/?','index.php?name=$matches[1]','top');
        add_rewrite_tag('%name%','([^&]+)');
    }
    

    【讨论】:

      【解决方案2】:

      您应该在动作钩子中调用add_rewrite_rule,如下所示:

      add_action('init', 'wpa8715_intit');
      
      function wpa8715_intit() {
          add_rewrite_rule('^people/([^/]*)/?','index.php?name=$matches[1]','top');
          add_rewrite_tag('%name%','([^&]+)');
      }
      

      【讨论】:

        猜你喜欢
        • 2013-10-16
        • 2015-07-27
        • 1970-01-01
        • 2015-04-11
        • 1970-01-01
        • 2011-03-12
        • 2011-05-30
        • 2012-06-13
        • 1970-01-01
        相关资源
        最近更新 更多