Membuat plugin saya multi-situs yang kompatibel

9

Saya ingin plugin saya diinstal di setiap blog dan membuat tabel database per blog. Saya punya kode ini:

register_activation_hook( __FILE__, 'install1' );
function install1() {
    global $wpdb;

    if (function_exists('is_multisite') && is_multisite()) {
        // check if it is a network activation - if so, run the activation function for each blog id
        if (isset($_GET['networkwide']) && ($_GET['networkwide'] == 1)) {
                    $old_blog = $wpdb->blogid;
            // Get all blog ids
            $blogids = $wpdb->get_col($wpdb->prepare("SELECT blog_id FROM $wpdb->blogs"));
            foreach ($blogids as $blog_id) {
                switch_to_blog($blog_id);
                _install2();
            }
            switch_to_blog($old_blog);
            return;
        }   
    } 
    _install2();        
}

function _install2()
{
    require_once WP_PLUGIN_DIR . '/pluginfolder/functions/database.php';
    require_once WP_PLUGIN_DIR . '/pluginfolder/functions/general.php';
    $db_error = false;

    $sql_file = WP_PLUGIN_DIR . '/pluginfolder/ossq.sql';
    os_db_connect(DB_HOST, DB_USER, DB_PASSWORD);
    os_set_time_limit(0);
    os_db_install(DB_NAME, $sql_file);
    if ($db_error != false) {

        //  echo 'instalation successfull';
    } else {


    }

Kode ini terinspirasi pada posting blog ini [http://shibashake.com/wordpress-theme/write-a-plugin-for-wordpress-multi-site]

File SQL terdiri dari:

DROP TABLE IF EXISTS address_book;
CREATE TABLE address_book (
   address_book_id int NOT NULL auto_increment,
   customers_id int NOT NULL,
   entry_gender char(1),
   entry_company varchar(255),
   entry_firstname varchar(255) NOT NULL,
   entry_lastname varchar(255) NOT NULL,
   entry_street_address varchar(255) NOT NULL,
   entry_suburb varchar(255),
   entry_postcode varchar(255) NOT NULL,
   entry_city varchar(255) NOT NULL,
   entry_state varchar(255),
   entry_country_id int DEFAULT '0' NOT NULL,
   entry_zone_id int DEFAULT '0' NOT NULL,
   PRIMARY KEY (address_book_id),
   KEY idx_address_book_customers_id (customers_id)
);

Namun, ini tidak berfungsi, plugin ini membuat tabel seperti pada wordpress biasa tetapi tidak pada setiap blog di lingkungan multisite.

Tolong bantu!

Ken
sumber
whats dalam file ossq.sql dan mengapa tidak menggunakan objek $ wpdb
Bainternet
daripada membuat tabel baru untuk setiap instalasi blog, bukankah lebih masuk akal untuk menggunakan hanya satu tabel tetapi menambahkan kolom untuk blog_id? Dengan begitu jika hanya ada satu blog, ID blog selalu 1. Jika multisite maka id blog diatur sesuai ID situs ...
Scott
Saya ingin melakukannya, tetapi saya tidak tahu bagaimana melakukannya. Saya dapat membuat kolom untuk id blog tetapi saya tidak tahu cara membuat fungsi untuk itu.
Ken
Ini berfungsi dengan baik, saya baru saja menambahkannya dalam kode saya. newzealandgoonline.co.nz/…
NZGO

Jawaban:

12

The Proper Jaringan Aktivasi meta-plugin ditulis tepat untuk kasus-kasus seperti ini.

scribu
sumber
Plugin yang bagus. Saya pikir Anda adalah penulisnya. Saya tidak bisa memberikan suara positif karena saya menggunakan 30 suara hari ini :(
Giri
Plugin tidak menyelesaikan masalah saya. Dua situs di mana saya mengaktifkan jaringan plugin saya masih memiliki 1 tabel database. Yang saya butuhkan adalah agar mereka memiliki tabel database terpisah masing-masing.
Ken
3
Itu berarti Anda tidak menambahkan awalan $ wpdb-> ke nama mereka.
scribu