我想为我的Multsite安装启动一个新主题,而不是简单地修改当前主题。问题是我有很多网站都在Multsite上运行,所以一个接一个地将我的所有网站更改为新主题会有点痛苦。
有没有办法一次更改多个站点的主题?在网络管理中的站点中,我可以看到一个批量操作选项,但当我选择我的站点并单击应用时,它什么都不做(应该吗!)
我想为我的Multsite安装启动一个新主题,而不是简单地修改当前主题。问题是我有很多网站都在Multsite上运行,所以一个接一个地将我的所有网站更改为新主题会有点痛苦。
有没有办法一次更改多个站点的主题?在网络管理中的站点中,我可以看到一个批量操作选项,但当我选择我的站点并单击应用时,它什么都不做(应该吗!)
我不建议使用update_option
完成这项任务。为什么?因为主题/插件可能使用switch_theme
在这种情况下不会运行。这个动作非常重要-它将允许您保存您的小部件,例如。。。
Fuxias回答的另一个问题是她使用template_directory
钩但没有必要每次都运行它。如果你设置了主题,它就设置好了,所以你只需要做一次。
下面的代码将遍历所有子网站,并将主题设置为给定主题。将其放在您的网站上,运行一次,然后删除(或评论):
function switch_all_multisite_themes() {
foreach ( get_sites() as $site ) {
switch_to_blog( $site->blog_id );
switch_theme( \'twentyeleven\' );
restore_current_blog();
}
}
switch_all_multisite_themes(); // run this function only once
创建MU plugin 和过滤器\'template_directory\'
.
在所有站点上强制执行TwentyEleven的示例代码:
<?php # -*- coding: utf-8 -*-
// Plugin Name: Force Styleswitch
// 08.06.2012
add_filter( \'template_directory\', \'t5_switch_theme\', 10, 3 );
function t5_switch_theme( $template_dir, $template, $theme_root )
{
$forced_theme = \'twentyeleven\';
if ( $template !== $forced_theme )
update_option( \'stylesheet\', $forced_theme );
return "$theme_root/$forced_theme";
}
您还可以遍历所有博客–使用get_blog_count()
和switch_to_blog()
– 并只运行一次更新。这个Network enable 中的操作wp-admin/network/themes.php
只是在站点上提供一个主题,它不会将其设置为活动主题。
我用CSS创建了一个移动版的网站,所有样式都在一个样式表中(使用@media only screen and (max-width: 480px), only screen and (max-device-width: 480px) 定义移动样式)。当它都在一个样式表中时,它工作得很好。但我想允许用户切换回标准视图,即使他们从移动设备查看站点。我不知道如何允许用户覆盖@media, 所以我似乎有两个选择:(1)单独的样式表加上样式切换脚本,或者(2)单独的主题加上主题切换。理论上,样式切换器应该可以做到这