WordPress ADD_REWRITE_RULE重定向匹配获取变量未传递到自定义模板

时间:2019-04-07 作者:sariDon

My target:

按照指南在主题(page expert.php)中创建页面模板Page Templates.add roles).http://mysite/author/expert-name. 但我想要链接http://mysite/writer/expert/[expert-nickname] 应显示用户角色的配置文件“专家”用户专家昵称它或多或少是add_rewrite_rule.

What I did:

模板文件、角色和页面(page\\u id=211,slug=http://[mysite]/writer/expert) 相应地创建。

重定向管理(通过function.php中的类myExpert初始化)和永久链接设置更新:

    class myExpert extends myWriters{
    public function __construct(
    add_filter(\'init\', array($this, \'set_expert_link_base\'));
    add_filter("expert_link", array($this, \'fix_expert_link\')); //For now, this changes the link of all author profiles. I\'ll look into it later.
    }

    function set_expert_link_base()
        {
            add_rewrite_tag(\'%expert%\', \'([^&]+)\', \'expert=\');
            add_rewrite_rule(\'^expert/([^/]*)?\',\'index.php?page_id=211&expert=$matches[1]\',\'top\');
        }

    function fix_expert_link($link)
        {
            if($link){
                return str_replace("author","expert",$link);
            }
        }
    }

Problem:

呼叫时http://mysite/writer/expert/[expert-nickname], 正在重定向到页面,但未在page expert中处理get变量。php
。以下不包含任何索引“专家”。(全局$wp\\u查询和$wp)

  1. $wp->query_vars
  2. $_REQUEST
  3. $wp_query->query_vars
$exp_slug= get_query_var(\'expert\');
ia空白

    add_filter(\'request\', array($this, show_req_vars()));
    function show_req_vars($vars)
    {
    print_r($vars);
    return $vars;
    }
输出:

数组([page\\u id=>211)

我做错了什么/错过了什么?

1 个回复
最合适的回答,由SO网友:nmr 整理而成

去除$query 参数来自add_rewrite_tag. 您的重写标记注册将如下所示:add_rewrite_tag(\'%expert%\', \'([^&]+)\');.

重写规则中的短语可能是\'^expert/([^/]+)/?\', 但这并不是问题的原因。

相关推荐

Client Profiles

正在寻找创建客户机数据库的最佳方法。插件能最好地实现以下功能吗?我的客户端数据库插件存储有关客户端的个人信息和统计信息,这些信息和统计信息将通过自定义字段和自定义表单收集,管理员创建客户端配置文件后,仪表板选项卡将打开列表区域(类似于用户选项卡)(仅限管理员)“添加新”功能(类似于仪表板的用户区域)。管理员可以将客户端分配给用户,分配给用户的客户端显示为用户元数据。分配给用户的客户端将在用户配置文件中可见,仪表板小部件显示为登录用户分配的客户端,并带有指向客户端配置文件页面的链接。插件是解决此问题的解决方