将小部件设置从一个博客复制到另一个博客

时间:2011-01-28 作者:Dave Morris

我正在尝试将“wpmu\\u new\\u blog”挂接到插件中,以便我可以将小部件设置从一个博客复制到正在创建的新博客。

有人知道是否有WordPress函数可以实现这一点,或者我应该只使用直接SQL吗?

谢谢Dave

2 个回复
最合适的回答,由SO网友:Peter Rowell 整理而成

我不认为有什么专门针对这一点的。您可能需要查看插件代码以查找对get_option() 查看他们使用的键,然后浏览DB表wp_options 使用phpMyAdmin(或其他)并获取相关值。

如果没有插件的具体支持,这可能是不确定的,因为其中可能有其他与上下文相关的信息,而您不想在新网站上看到这些信息。

SO网友:Dave Morris

通过使用以下代码挂接wpmu\\u new\\u博客,手动解决了此问题:

global $wpdb;

$option_names = $wpdb->get_results("SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE \'widget_%\' OR option_name LIKE \'sidebars_%\';");

$widget_options = array();
foreach ($option_names as $option_name) {
    $widget_options["$option_name->option_name"] = get_option($option_name->option_name);
}

switch_to_blog($blog_id);

delete_option( \'widget_search\', array ( 2 => array ( \'title\' => \'\' ), \'_multiwidget\' => 1 ) );
delete_option( \'widget_recent-posts\', array ( 2 => array ( \'title\' => \'\', \'number\' => 5 ), \'_multiwidget\' => 1 ) );
delete_option( \'widget_recent-comments\', array ( 2 => array ( \'title\' => \'\', \'number\' => 5 ), \'_multiwidget\' => 1 ) );
delete_option( \'widget_archives\', array ( 2 => array ( \'title\' => \'\', \'count\' => 0, \'dropdown\' => 0 ), \'_multiwidget\' => 1 ) );
delete_option( \'widget_categories\', array ( 2 => array ( \'title\' => \'\', \'count\' => 0, \'hierarchical\' => 0, \'dropdown\' => 0 ), \'_multiwidget\' => 1 ) );
delete_option( \'widget_meta\', array ( 2 => array ( \'title\' => \'\' ), \'_multiwidget\' => 1 ) );

foreach ($widget_options as $option_name => $option_value) {
    update_option($option_name, $option_value);
}

restore_current_blog();
虽然不是世界上最好的代码,但我想它完成了任务。

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?