我有一个主题,其中内置了一些自定义重写规则。问题是他们没有使用WP multisite。在我用来构建主题(在网络之外)的安装上,它工作得很好。当我将主题引入网络时,它不起作用。
funcitons.php
add_rewrite_rule(\'^prop/([^/]*)/?\',\'index.php?pagename=prop&mls=$matches[1]\',\'top\');
add_filter(\'query_vars\', \'add_mls\');
function add_mls($public_query_vars) {
$public_query_vars[] = \'mls\';
return $public_query_vars;
}
web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="WordPress Rule 1" stopProcessing="true">
<match url="^index\\.php$" ignoreCase="false" />
<action type="None" />
</rule>
<rule name="WordPress Rule 2" stopProcessing="true">
<match url="^wp-admin$" ignoreCase="false" />
<action type="Redirect" url="wp-admin/" redirectType="Permanent" />
</rule>
<rule name="WordPress Rule 3" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
</conditions>
<action type="None" />
</rule>
<rule name="WordPress Rule 4" stopProcessing="true">
<match url="^(wp-(content|admin|includes).*)" ignoreCase="false" />
<action type="Rewrite" url="{R:1}" />
</rule>
<rule name="WordPress Rule 5" stopProcessing="true">
<match url="^([_0-9a-zA-Z-]+/)?(.*\\.php)$" ignoreCase="false" />
<action type="Rewrite" url="{R:2}" />
</rule>
<rule name="WordPress Rule 6" stopProcessing="true">
<match url="." ignoreCase="false" />
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
现在,我看到的相似但不完全相同的部分是“Wordpress规则3”,在我的测试站点中,它如下所示:
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="index.php"/>
</rule>
所以我继续将规则从我的开发站点添加到网络中,但我仍然没有得到任何结果。有什么指示吗?
最合适的回答,由SO网友:Tim Plummer 整理而成
首先,我没有刷新重写规则,所以,或者说,规则没有被包括在内。
其次,我最终使用了一种更简单的解决方案,将变量传递到应用了模板的任何页面,这是add_rewrite_endpoint
.
add_action(\'init\', \'my_add_endpoints\');
function my_add_endpoints()
{
add_rewrite_endpoint(\'myendpoint\', EP_PAGES);
}
哦!重要信息-
add_rewrite_endpoint
为您注册一个查询var,并将该var的值设置为紧跟其后的值。
因此,此url:
http://mysite.com/mypage/myendpoint/myvalue
成为:
http://mysite.com/index.php?pagename=mypage&myendpoint=myvalue
我花了两天的时间才最终弄清楚抄本上应该写些什么。我希望这对任何遇到它的人都有帮助。