【发布时间】:2018-03-08 08:19:33
【问题描述】:
我正在为自定义 WordPress 多站点网络构建一个 WordPress 插件,并且有一些文件使用 URL 变量从第二个数据库(不是 WordPress 数据库)加载信息。
在 WordPress 外部构建的版本中,通过导航到 http://website.com/NAME-HERE,它会检查它是否是我数据库中的用户名,如果不是,则检查它是否是我数据库中的一个组并加载与 if 对应的文件它的用户名或组。
现在我完全迷失了在 WordPress Multisite 中实现这一点。据我所知,插件不能让.htaccess 重写?如何让它在所有网络站点上运行?
如果不是最好的方法是什么?
我是否需要将我的 pretty.php 和 .htaccess 重写放入我的根目录并将页面指向位于插件中的文件?如果是这样,这如何与多个主题一起使用?
到目前为止,我唯一的另一个想法是,这可能可以通过 RewriteMap 之类的东西来完成。
此时,我认为最好的办法是联系 StackOverflow 社区寻求帮助或指导。
.htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(\w.+)$ ./pretty.php?pretty=$1 [QSA]
ErrorDocument 404 /404.php
pretty.php
// First check if passed pretty parameter is a username.
if(checkIfUserByUsername($_GET['pretty']))
{
$_GET['username'] = $_GET['pretty'];
include("USERNAME.php");
// If not a username, check to see if it's an event.
}else if(checkIfStreamByPretty($_GET['pretty'])){
$_GET['id'] = getStreamIdFromPretty($_GET['pretty']);
include("GROUP.php");
}else{
// If it's none, redirect to the 404 page.
include("404.php");
}
我想提供更多关于我想要完成的内容的上下文,我正在创建页面模板文件,其中一个用于配置文件,另一个用于组,正如您在我的 .htaccess 和 pretty.php 上面看到的那样然后在页面模板文件的顶部,然后使用
$user_id = getIdFromUsername($_GET['username']);
$_GET['user_id'] = $user_id;
我真的很难弄清楚如何以一种允许它与多个主题一起使用的方式来解决这个问题。目前只是在寻找任何解决方案。
【问题讨论】:
-
目前尚不清楚您希望达到的预期结果。请分解您的问题,以便更简洁地说明您真正想要发生的事情,而不是您遇到的困难。至于对
.htaccess的编辑,您可以查看其他对.htaccess文件进行编辑的插件,例如All In One WP Security & Firewall。 -
如果我访问 example.com/Dustin,它会检查它是用户名还是组,并显示它所属的页面模板文件。
-
但它也需要为 example.com/SITE/Dustin 创建的多站点工作
标签: php wordpress .htaccess mod-rewrite multisite