wordpress add_rewrite_rule() 未显示预期页面

wordpress add_rewrite_rule() not showing expected page

我正在尝试使用 wordpress 重写规则为我正在开发的插件配置路由。我正在为我的插件创建的 class 中调用代码 - 我使用的代码是:

function __construct() {
    add_action('init', array($this, 'category_rewrite_rule'), 10, 0);
}

function category_rewrite_rule() {
    add_rewrite_rule(
        '^products/([^/]*)/?',
        'index.php?category=$matches[1]',
        'top'
    );
}

它应该像 domainname.com/products/garden 一样采用 url 并显示 /index.php?category=garden,但目前它显示站点的主页。如果我直接导​​航到 /index.php?category=garden,我可以看到预期的页面。

我知道代码是 运行,因为我在 class 中有其他功能可以正常工作,我也可以将 die() 放在重写功能中,它按预期工作。

每次更改代码时,我都在 WP 设置 -> 永久链接页面上按保存以刷新链接。

我在想这可能是我本地开发环境的问题;我正在使用 Laravel Valet 处理 Mac,我还注意到站点根文件夹中没有 .htaccess 文件。我尝试手动创建一个(使用默认的 WP 代码)但没有帮助。

编辑:今天下午我使用 Laravel Forge 设置了一个 Wordpress 网站并在上面安装了我的插件,但我仍然遇到同样的问题,所以也许它毕竟不是服务器环境:(

编辑 2:我在 VM 上设置了一个 LAMP 堆栈并且代码有效,所以这绝对与使用 Laravel Valet/Forge (Nginx) 有关。

有人能帮忙吗?

谢谢

正如我在编辑中所怀疑的那样,问题是因为我的本地和第一个测试服务器分别使用 Laravel Valet 和 Laravel Forge。

我意识到这是问题所在,因为当我尝试在 VM 上使用 LAMP 堆栈时代码按预期工作。

所以最后我意识到我必须手动将重写规则添加到我的 Nginx 配置中才能使它们工作,因为当您的服务器使用 Nginx 时无法使用 Wordpress 的 add_rewrite_rule 功能.