Inledning
Stötte för någon vecka på ett nytt problem för min del. Det handlade om att jag skulle skapa ett plugin som används i multi-site. Jag har jobbat relativt lite med Multi-Sites och problemet var att tabellerna inte skapades för alla ”siterna” som fanns i nätverket.
Källkod
register_activation_hook(__FILE__, 'hass_vote_activate'); function hass_vote_activate() { global $wpdb; if (function_exists('is_multisite') && is_multisite()) { if (isset($_GET['networkwide']) && ($_GET['networkwide'] == 1)) { $old_blog = $wpdb->blogid; $blogids = $wpdb->get_col($wpdb->prepare("SELECT blog_id FROM $wpdb->blogs")); foreach ($blogids as $blog_id) { switch_to_blog($blog_id); _hass_vote_activate(); } switch_to_blog($old_blog); return; } } _hass_vote_activate(); } function _hass_vote_activate() { global $wpdb; $table_name = $wpdb->prefix . 'yourtable'; if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { $sql = "CREATE TABLE " . $table_name . " ( id mediumint(9) NOT NULL AUTO_INCREMENT, dateadded bigint(11) DEFAULT '0' NOT NULL, subject VARCHAR(255) NOT NULL, UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } }
Ovanstående kod vandrar igenom alla dina siter som är uppsatta i nätverket och kör aktiveringsfunktionen för dessa.
Koden ovan raderar inte tabellerna vid inaktivering, det skapar heller inte tabellerna för nya siter som aktiveras i nätverket. Du får i sådana fall använda följande actions:
add_action( 'wpmu_new_blog', 'your_function_activation_on_new_blog'); // For new site register_deactivation_hook( __FILE__, 'your_deactivation_function' ); // For deactivation





