我正在做一个项目,在WordPress多站点安装中允许多个迷你站点。以下是它的工作原理:
客户有大量的独立地点,每个地点都有自己的网站。所有这些网站都是大型WordPress网络中的网站,允许集中用户和网站维护。此部件已在工作。
但每个地点都有任意数量的客户,并希望每个客户都有自己的“客户”;迷你网站“;在网络中。基本上是一个新的WordPress站点,但位于该位置的站点、URL和管理员列表下面。
微型站点的用户只能使用该微型站点,不能使用父站点,也不能使用网络上的任何其他站点。
由于我一直在研究这个问题,我遇到了两种不同的设置方法。两者都有些复杂:
多网络安装WordPress允许您使用一个代码库安装多个独立网络。就像多站点一样,但使用类固醇。我解决上述问题的第一次尝试是在系统中嵌入一系列多网络功能。当您添加一个新的客户端迷你站点时,实际上是在向网络添加一个新站点;“拥有”;由父站点创建。
这一半奏效了。您可以很好地创建站点,但如果没有对服务器的更深入控制(我的客户端要求提供插件,他们可以在服务器上放置插件,而无需给我SSH访问权限),则很难在Apache中使用路由。一些新的迷你站点将加载,其他将加载404,其他将重定向回父站点。
另一个问题是管理。虽然您可以创建任意多个迷你网站(并可以通过phpMyAdmin验证它们是否存在),但我很难读取可用网站的列表。
另一个问题是数据库管理。每次创建新站点时,都会在数据库中创建10多个新表。如果该站点只有1到2篇文章/页面,这就太过分了。
带有主题覆盖的自定义帖子类型我的新方法是将客户端设置为自定义帖子类型。然后,父站点的用户可以编写新帖子,并选中元框中的字段,将内容与客户端关联(使用帖子到帖子的关系方案)。
当您访问自定义帖子类型的页面时,WordPress会覆盖显示,并显示一个自定义主题(P2的一个mod),显示与自定义帖子类型关联的帖子。
这里的可扩展性问题没有那么多,只是在内容管理方面。我还没有找到一种允许从一个客户端到另一个客户端过滤内容的方法(请记住,内容与基于元字段的CPT相关联,因此除非我构建另一个帖子管理屏幕,否则很难查看“client-x的所有帖子”)。
我的问题是:以下哪种方法是最好的?我是否应该考虑另一种方法,让最终用户更容易使用?
最合适的回答,由SO网友:anmari 整理而成
在我看来,你让事情变得比需要的更复杂了。您已经将作者/用户作为客户端-无需创建另一个概念来表示这一点。
要求:
wp网络,其中每个子网站都有许多用户(客户端),每个客户端都希望有一个可以编辑和控制的页面。(只有一页?没有帖子?)
所以他们的url类似于:
网络com/minisite/clients/clientx(子文件夹)
或
迷你网站。网络com/客户端/客户端X(子域)
方法:
使用成员/角色插件,如Justin Tadlocks free member插件,创建定制的客户端角色,可以编辑页面,但不能创建帖子等(或使用php)
在客户端注册时,在“user\\u register”上添加操作:
在“客户端”下创建客户端子页面“clientx”,将客户端x作为作者名称,可以根据输入的详细信息或使用注册自定义字段询问他们想要的名称添加操作/过滤器(可能需要查看wp代码以找到最佳挂钩)
从菜单中删除add\\u new(google wordpress删除菜单-我已经做了,只是现在记不清是哪一个操作了)
检查是否已经创建了1个页面,不允许更多(如果他们找到了一种方法,即使使用菜单(我认为WP没有与编辑页面不同的创建页面功能,但可能会看到http://core.trac.wordpress.org/ticket/16714确保每个人都只能从“编辑页面”列表中看到自己的页面(如果客户端页面有标准模板):让自动创建的页面有一个客户端模板,可以从他们的个人资料等中添加他们的详细信息。你甚至可以从编辑页面下拉列表中获得各种模板,让他们可以根据键入的内容选择详细信息的布局。我感兴趣的是:我正在考虑自己做类似的事情,并可以将其作为一个插件,听到人们可能有不同的要求真是太有趣了。
我认为上述方法将保持它相当干净和简单(始终是一个好主意)。