Скрипт удаления плагина в мультисайте
Я только что понял, что традиционный uninstall.php
файл с подключаемым модулем не работает в многосайтовом режиме.
if ( !defined( 'WP_UNINSTALL_PLUGIN' ) )
exit();
delete_option( 'plugin_option_name' );
Это не удаляет параметры подсайтов во всех таблицах wp_SITE-ID_options
.
Существует ли стандартный способ сделать это?
9
1 answers
Поиск во всех файлах uninstall.php
, которые у меня есть на жестком диске, я нашел два, которые имели функцию is_multisite()
: Редактор ролей пользователя и Добавляют код в заголовок.
Оба используют цикл $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 );
}
Вопросы и ответы по теме: Удаление, активация, деактивация плагина: типичные функции и инструкции
8
Author: brasofilo, 2017-04-13 12:37:52