WordPress重写API调用未创建新规则

时间:2018-03-13 作者:JRLEH

我知道关于重写规则不能正常工作的查询非常常见,但在我的情况下,实际上我无法首先创建规则。我需要创建一个插件,将加载到许多网站,并为每个网站提供一些常见的功能。它将提供的功能之一是创建这些站点通用的重写规则。此时,我将测试示例缩减为以下内容:

运行apache 2.4的Debian服务器。x、 php 5.6.3x,wordpress 4.9.4,使用mysql数据库。wordpress安装是源代码的一个干净的解压缩副本,没有启用插件。它刚刚完成了初始设置。apache vhost被设置为允许所有版本,但这里的问题甚至不包括。htaccess正在写入,因为我确实看到wordpress正在更新。htaccess文件显示以下内容(但从不在其中添加规则):

# BEGIN WordPress

# END WordPress
我在wp内容/插件/测试插件/测试插件中创建了一个插件。php。

在逐渐删除代码片段后,我现在让它只运行测试插件文件中的以下代码:

function test_rules()
{
    echo "test"; // Just to see that the function is being called
    add_rewrite_rule(
        \'^test/([0-9]+)/?\',
        \'index.php?test=matches[1]\',
        \'top\'
    );
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
    var_dump($wp_rewrite->rewrite_rules());
}
add_action(\'init\', \'test_rules\');
显然,仅仅为了隔离重写API失败的地方,这是一段愚蠢的代码。当我加载站点的索引时,代码正在运行,因为我确实看到了“test”输出以及var\\u dump()输出。然而,在所有情况下,var\\u dump()输出都是一个没有值的数组。排序flush\\u规则的任何变化(或不使用它等)似乎都没有效果。

我还在数据库中查找,并从wp\\u选项中选择*,其中option\\u name=\'重写\\u规则\'。该行存在,但从未填充该选项的值。

我最初试图用现有代码在网站上设置这个,但现在我使用的是一个全新的裸体安装,只包含上面的插件(是的,它是活动的),我只是没有得到这些规则。有人能告诉我这里缺少什么吗?

谢谢

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

Milo在上述评论中提供了正确的解决方案。在管理界面中,Pretty permalinks被设置为plain,这显然会导致WP\\u重写无提示地执行任何操作。我把答案贴在这里,这样我就可以把一些东西标记为正确/完整,这样就可以显示答案了。我做错了吗?

结束