卸载多站点中插件的脚本

时间:2013-01-13 作者:brasofilo

我刚刚意识到uninstall.php 插件上的文件在多站点中不起作用。

if ( !defined( \'WP_UNINSTALL_PLUGIN\' ) ) 
    exit();

delete_option( \'plugin_option_name\' );
这不会删除所有子站点选项wp_SITE-ID_options 表格。

有没有标准的方法可以做到这一点?

1 个回复
最合适的回答,由SO网友:brasofilo 整理而成

在所有内部搜索uninstall.php 我在硬盘中找到了两个具有此功能的文件is_multisite(): User Role EditorAdd Code to Head.

两者都使用$wpdb 环简化:

<?php
/**
 * Plugin Uninstall Procedure
 */

// Make sure that we are uninstalling
if ( !defined( \'WP_UNINSTALL_PLUGIN\' ) ) 
    exit();

// Leave no trail
$option_name = \'plugin_option_name\';

if ( !is_multisite() ) 
{
    delete_option( $option_name );
} 
else 
{
    global $wpdb;
    $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
    $original_blog_id = get_current_blog_id();

    foreach ( $blog_ids as $blog_id ) 
    {
        switch_to_blog( $blog_id );
        delete_option( $option_name );     

        // OR
        // delete_site_option( $option_name );  
    }

    switch_to_blog( $original_blog_id );
}
相关问答;答:Uninstall, Activate, Deactivate a plugin: typical features & how-to

结束

相关推荐

Multisite Login Issues

我正在尝试正确设置Wordpress Multisite,我已经设置了所有站点,但只能访问主域的wp admin。我已经看到了各种修复方法,但它们只会导致更大的问题。我尝试将以下内容添加到wp config。php,根据几篇博客文章的说明,这是一个修复:define(\'ADMIN_COOKIE_PATH\', \'/\'); define(\'COOKIE_DOMAIN\', \'\'); define(\'COOKIEPATH\', \'\'); define(\'SITECO