반응형
wp 플러그인 활성화 시 여러 사용자 지정 DB 테이블을 만들 수 없습니다.
워드프레스 플러그인 활성화에 대한 db에서 여러 사용자 정의 테이블을 만들 수 없습니다. 이 코드에서 언급된 마지막 테이블은 모든 테이블(사용자, 필드, 가시성, 알림)을 만드는 대신 "Bookmark"입니다.
function your_plugin_options_install() {
global $wpdb;
//global $your_db_name;
$uservar = $wpdb->prefix . 'user';
$fieldvar = $wpdb->prefix . 'field';
$visibilitytypevar = $wpdb->prefix . 'visibily';
$notificationvar = $wpdb->prefix . 'notification';
$jobtypevar = $wpdb->prefix . 'jobtype';
$bookmarkvar = $wpdb->prefix . 'bookmark';
// $profiledatavar = $wpdb->prefix . 'profiledata';
//$employeevar = $wpdb->prefix . 'employee';
//echo "some";
// create the ECPT metabox database table
//if($wpdb->get_var("SHOW TABLES LIKE '$yourtable'") != $yourtable)
//{
$sql = "CREATE TABLE IF NOT EXISTS " . $uservar . " (
`u_id` int(20) NOT NULL AUTO_INCREMENT,
`u_name` varchar(30) ,
`u_phonenumber` int(20) ,
`u_email` varchar(30) NOT NULL,
`u_password` varchar(50) NOT NULL,
PRIMARY KEY (u_id)
);";
$sql = "CREATE TABLE IF NOT EXISTS " . $fieldvar . " (
`f_id` int(20) NOT NULL AUTO_INCREMENT ,
`f_title` varchar(30) NOT NULL,
PRIMARY KEY (f_id)
);";
$sql = "CREATE TABLE IF NOT EXISTS " . $visibilitytypevar . " (
`v_id` int(20) NOT NULL AUTO_INCREMENT ,
`v_type` bool NOT NULL,
PRIMARY KEY (v_id)
);";
$sql = "CREATE TABLE IF NOT EXISTS " . $notificationvar . " (
`n_id` int(20) NOT NULL AUTO_INCREMENT ,
`u_id` int(20) NOT NULL,
PRIMARY KEY (n_id)
);";
$sql = "CREATE TABLE IF NOT EXISTS " . $jobtypevar . " (
`jt_id` int(20) NOT NULL AUTO_INCREMENT ,
`jt_title` varchar(30),
PRIMARY KEY (jt_id)
);";
$sql = "CREATE TABLE IF NOT EXISTS " . $bookmarkvar . " (
`bm_id` int(20) NOT NULL AUTO_INCREMENT ,
`u_id` int(20) NOT NULL,
`bm_title` varchar(30),
PRIMARY KEY (bm_id)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
//}
// run the install scripts upon plugin activation
register_activation_hook(__FILE__,'your_plugin_options_install');
당신은 당신의 것을 우선시하고 있습니다.$sql
변수.질의할 때마다 dbDelta 함수를 사용하면 됩니다.아래와 같은 형식입니다.
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
// your first query
$sql = '...';
dbDelta($sql);
// your second query
$sql = '...';
dbDelta($sql);
.
.
.
// your nth query
$sql = '...';
dbDelta($sql);
이런 일이 일어나는데, 왜냐하면 당신은 당신의 기능에서 항상 당신의 것을 다시 쓰고 있기 때문입니다.$sql
실행하기 전에 변수를 선택합니다.이것이 마지막만 실행되는 이유입니다.
결국에$sql
정의, 쿼리 실행.
//define the query
$sql = "CREATE TABLE `firsttable` ....";
//Run the query
dbDelta($sql); //If this is what is running the query.
//Another table
$sql = "CREATE TABLE `secondtable` ....";
//Run the new query
dbDelta($sql); //If this is what is running the query.
한다면dbDelta($sql);
sql을 실행합니다. 실행하려면 각 sql 문 아래에 이 행을 추가해야 합니다.
다음과 같은 것을 시도해 볼 수도 있습니다.
첫번째 쿼리 라이트용$sql = "your query text goes here"
,
모든 다음 쿼리에 대해$sql .= "your query text goes here"
언급URL : https://stackoverflow.com/questions/29889943/not-able-to-create-multiple-custom-db-tables-on-activation-of-wp-plugin
반응형
'programing' 카테고리의 다른 글
Python에서 요청이 AJAX인지 확인합니다. (0) | 2023.10.04 |
---|---|
설치된 Android 응용프로그램 목록을 가져와서 실행할 응용프로그램을 선택하는 방법 (0) | 2023.10.04 |
Print_r은 아무것도 반환하지 않으며 var_dump는 NULL을 표시합니다. (0) | 2023.10.04 |
AngularJSng 클릭으로 두 번 불이 발생 (0) | 2023.09.24 |
각도가 있어야 하는 것 아닌가요?Jsong 지시? (0) | 2023.09.24 |