prefix . ‘my_custom_data’;
$charset_collate = $wpdb->get_charset_collate();
$sql = “CREATE TABLE IF NOT EXISTS $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_login varchar(60) NOT NULL,
data text NOT NULL,
PRIMARY KEY (id)
) $charset_collate;”;
require_once(ABSPATH . ‘wp-admin/includes/upgrade.php’);
dbDelta($sql);
}
add_action(‘init’, ‘my_custom_plugin_init’);
// AJAX処理
function my_custom_plugin_ajax_handler() {
global $wpdb;
$action = $_POST[‘action’];
$user_login = wp_get_current_user()->user_login;
switch ($action) {
case ‘add_data’:
$data = sanitize_text_field($_POST[‘data’]);
$wpdb->insert($wpdb->prefix . ‘my_custom_data’, [‘user_login’ => $user_login, ‘data’ => $data]);
break;
case ‘update_data’:
$id = intval($_POST[‘id’]);
$data = sanitize_text_field($_POST[‘data’]);
$wpdb->update($wpdb->prefix . ‘my_custom_data’, [‘data’ => $data], [‘id’ => $id]);
break;
case ‘get_data’:
$results = $wpdb->get_results($wpdb->prepare(“SELECT * FROM {$wpdb->prefix}my_custom_data WHERE user_login = %s”, $user_login));
wp_send_json_success($results);
break;
case ‘delete_data’:
$id = intval($_POST[‘id’]);
$wpdb->delete($wpdb->prefix . ‘my_custom_data’, [‘id’ => $id]);
break;
}
wp_die();
}
add_action(‘wp_ajax_my_custom_plugin’, ‘my_custom_plugin_ajax_handler’);
add_action(‘wp_ajax_nopriv_my_custom_plugin’, ‘my_custom_plugin_ajax_handler’);
// JavaScriptの追加
function my_custom_plugin_enqueue_scripts() {
wp_enqueue_script(‘my-custom-plugin-js’, plugins_url(‘script.js’, __FILE__), [‘jquery’], null, true);
wp_localize_script(‘my-custom-plugin-js’, ‘my_custom_plugin_ajax’, [‘ajax_url’ => admin_url(‘admin-ajax.php’)]);
}
add_action(‘wp_enqueue_scripts’, ‘my_custom_plugin_enqueue_scripts’);
