Tôi muốn plugin của tôi được cài đặt trên mỗi blog và tạo các bảng cơ sở dữ liệu cho mỗi blog. Tôi có mã này:
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 {
}
Mã được lấy cảm hứng từ bài đăng trên blog này [http://shibashake.com/wordpress-theme/write-a-plugin-for-wordpress-multi-site]
Tệp SQL bao gồm:
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)
);
Tuy nhiên, nó không hoạt động, plugin tạo các bảng giống như trên một wordpress thông thường nhưng không phải trên mỗi blog trên môi trường nhiều trang.
Xin vui lòng giúp đỡ!
whats trong tệp ossq.sql và tại sao không sử dụng đối tượng $ wpdb
—
BaiNET
thay vì tạo một bảng mới cho mỗi lần cài đặt blog, sẽ không có ý nghĩa hơn khi chỉ sử dụng một bảng nhưng thêm một cột cho blog_id? Theo cách đó, nếu chỉ có một blog thì ID blog luôn là 1. Nếu nhiều trang thì id blog được đặt theo ID trang web ...
—
Scott
Tôi muốn làm như vậy, nhưng tôi không biết làm thế nào. Tôi có thể tạo một cột cho các id blog tuy nhiên tôi không biết cách tạo một hàm cho điều đó.
—
Ken
Điều này hoạt động rất tốt, gần đây tôi đã thêm nó vào mã của tôi. newzealandgoonline.co.nz/...
—
NZGO