分からないこと
- termsテーブル
- terms_taxonomyテーブル
- term_relationshipsテーブル
この順番でデータをインサートしました。
一応、インサートした情報は問題なく保存され、タグとして表示されています。
どうして消えてしまうかが分かりません。
何か糸口だけでも教えていただけないでしょうか・・・
既存のタグデータが消えてインサートしたデータが残っています。
(記事ページのタグを見る限りです)
php
1function insertDataToTermsTable($exData, $wpdb) { 2 extract($exData); 3 $encodedExmNm = rawurlencode($exNm); 4 $wpdb->query( 5 $wpdb->prepare( 6 " 7 INSERT INTO $wpdb->terms 8 ( 9 name, 10 slug, 11 term_group 12 ) 13 VALUES 14 ( 15 %s, 16 %s, 17 %d 18 ) 19 ON DUPLICATE KEY UPDATE 20 name = VALUES(name), 21 slug = VALUES(slug), 22 term_group = VALUES(term_group) 23 ", 24 array( 25 $exNm, 26 $encodedExNm, 27 0 28 )) 29 ); 30}
php
1function insertDataToTermTaxonomyTable($exData, $wpdb) { 2 extract($exData); 3 $termId = $wpdb->get_var("SELECT term_id FROM wp_terms WHERE name = '$exNm'"); 4 $wpdb->query( 5 $wpdb->prepare( 6 " 7 INSERT INTO $wpdb->term_taxonomy 8 ( 9 term_id, 10 taxonomy, 11 count 12 ) 13 VALUES 14 ( 15 %d, 16 %s, 17 %d 18 ) 19 ON DUPLICATE KEY UPDATE 20 term_id = VALUES(term_id), 21 taxonomy = VALUES(taxonomy), 22 count = VALUES(count) 23 ", 24 array( 25 $termId, 26 post_tag, 27 1 28 )) 29 ); 30}
PHP
1function insertDataToTermRelationships($id, $exData, $wpdb) { 2 $postId = $id->post_id; 3 extract($exData); 4 $termId = $wpdb->get_var("SELECT term_id FROM wp_terms WHERE name = '$exNm'"); 5 $termTaxonomyId = $wpdb->get_var("SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id = '$termId'"); 6 $wpdb->query( 7 $wpdb->prepare( 8 " 9 INSERT INTO $wpdb->term_relationships 10 ( 11 object_id, 12 term_taxonomy_id, 13 term_order 14 ) 15 VALUES 16 ( 17 %d, 18 %d, 19 %d 20 ) 21 ON DUPLICATE KEY UPDATE 22 object_id = VALUES(object_id), 23 term_taxonomy_id = VALUES(term_taxonomy_id), 24 term_order = VALUES(term_order) 25 ", 26 array( 27 $postId, 28 $termTaxonomyId, 29 0 30 ))); 31 }
#テーブル定義
sql
1CREATE TABLE `wp_term_relationships` ( 2 `object_id` bigint(20) unsigned NOT NULL DEFAULT '0', 3 `term_taxonomy_id` bigint(20) unsigned NOT NULL DEFAULT '0', 4 `term_order` int(11) NOT NULL DEFAULT '0', 5 PRIMARY KEY (`object_id`,`term_taxonomy_id`), 6 KEY `term_taxonomy_id` (`term_taxonomy_id`) 7) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
sql
1CREATE TABLE `wp_term_taxonomy` ( 2 `term_taxonomy_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 3 `term_id` bigint(20) unsigned NOT NULL DEFAULT '0', 4 `taxonomy` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', 5 `description` longtext COLLATE utf8mb4_unicode_ci NOT NULL, 6 `parent` bigint(20) unsigned NOT NULL DEFAULT '0', 7 `count` bigint(20) NOT NULL DEFAULT '0', 8 PRIMARY KEY (`term_taxonomy_id`), 9 UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`), 10 KEY `taxonomy` (`taxonomy`) 11) ENGINE=InnoDB AUTO_INCREMENT=12634 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
sql
1CREATE TABLE `wp_terms` ( 2 `term_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 3 `name` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', 4 `slug` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', 5 `term_group` bigint(10) NOT NULL DEFAULT '0', 6 PRIMARY KEY (`term_id`), 7 UNIQUE KEY `name` (`name`), 8 UNIQUE KEY `name_2` (`name`), 9 UNIQUE KEY `name_3` (`name`), 10 UNIQUE KEY `slug` (`slug`) 11) ENGINE=InnoDB AUTO_INCREMENT=13497 DEFAULT CHARSET=utf8mb4;
上記のようなテーブル設定です。
これでもダメでしょうか...。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/26 08:59
2017/06/26 09:28
2017/06/26 10:01 編集
2017/06/26 10:04