昨天我在自己托管的网站上在Wordpress上安装了一个新主题。我知道这个功能允许您预览主题并使用它来选择我想要安装的新主题。
问题 我不想打断我的网站的正常操作,但这个新主题需要大量自定义才能准备好。我该怎么做?
我的蹩脚解决方案 是我在桌面上运行虚拟服务器的唯一方法吗?这似乎很乏味,更不用说在执行此操作时切换到“真实”服务器时通常会遇到的所有错误。
更好的方式?
我一直在搜索SO和WordPress论坛,以获得关于如何做到这一点的答案,但已经做得很短。我原以为这是一个常见的问题。也许我使用了错误的搜索词[themes, customization, before installing]
???
非常感谢任何帮助!谢谢!
答案 0 :(得分:4)
好的,既然你的问题非常好,可能并不是很少有人在决定更新他们的网站时会经历相同的过程,我决定尝试get_stylesheet
和{{1过滤钩子。事实证明,使用非常小的插件,您可以轻松地根据特定规则强制执行特定主题(在这种情况下,任何已登录的访问者,但您可以更改此选项以使用您想要的任何逻辑)。
以下是您需要将代码放入plugins目录中的文件:
get_template
所以 - 首先备份您的数据库!我在本地进行了测试,其中Twenty Eleven是默认主题,基本框架主题是我的自定义主题 - 主题选项和导航菜单已正确保存。 / p>
然后您需要做的就是更新文件(将<?php
/*
Plugin Name: Switch Theme
Description: Switches the theme for logged-in visitors, while keeping the current theme for everyone else. !!!NOTE!!! Please back-up your database prior using this plugin - I can't guarantee that it will work with any theme, nor that it won't break your site's set-up - USE AT YOUR OWN RISK(I did a quick test and it seemed to be fine, but haven't done extensive testing).
You don't need to switch to the desired theme before that - you want to keep active the theme that you will display to your visitors - the one that you will see will be used programatically.
Before activating the plugin, change the line that says `private $admin_theme = '';` to `private $admin_theme = 'theme-directory-name';` where "theme-directory-name" is obviously the name of the directory in which the desired theme resides in.
*/
class MyThemeSwitcher {
private $admin_theme = '';
function MyThemeSwitcher() {
add_filter( 'stylesheet', array( &$this, 'get_stylesheet' ) );
add_filter( 'template', array( &$this, 'get_template' ) );
}
function get_stylesheet($stylesheet = '') {
if ( is_user_logged_in() && $this->admin_theme ) {
return $this->admin_theme;
}
return $stylesheet;
}
function get_template( $template ) {
if ( is_user_logged_in() && $this->admin_theme ) {
return $this->admin_theme;
}
return $template;
}
}
$theme_switcher = new MyThemeSwitcher();
的行改为private $admin_theme = '';
,其中private $admin_theme = 'theme-slug';
是您想要的主题所在目录的名称使用是)。
此外 - 如果不影响实际网站,您将无法更改theme-slug
和Front page
选项,也无法更改两个主题使用的任何共享组件(网站名称,首页,帖子页面,每页帖子等选项,内容等)。
所以如果你不知道这个解决方案是否适合你 - 嗯,这取决于你。
如果两个主题都不相对复杂,那么很可能你应该能够使用这个hack。如果他们可能你应该像其他人建议的那样第二次安装你的网站 - 我认为在子域或子目录中的第二次安装对你来说是最好的选择(仅仅因为移动多站点数据库是比移动普通的WP数据库更复杂)。
答案 1 :(得分:2)
我设置了安装了wordpress的本地apache服务器来自定义和测试新主题。完成自定义后,您可以将主题上传到您的实际站点并激活它。如果您需要在仪表板中设置设置,则可能需要再次调整它们。这是在投放之前测试/自定义主题的一种方法。
答案 2 :(得分:1)
您可以创建一个网络(使用define('WP_ALLOW_MULTISITE', true);
生成WordPress多站点,请参阅:http://codex.wordpress.org/Create_A_Network),然后创建一个子站点,然后使用维护插件将其“关闭”,以便无法访问对于未以管理员身份登录的用户,请导出您的帖子&amp;来自主博客的数据,使用WordPress默认导入程序将其导入子博客,然后将新主题应用于此子博客并进行处理。当一切都满足您时,将主题应用于主站点并停用子站点。