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’:
if (isset($_POST[‘data’])) {
$data = sanitize_text_field($_POST[‘data’]);
// データの挿入処理
if ($wpdb->insert($wpdb->prefix . ‘my_custom_data’, [‘user_login’ => $user_login, ‘data’ => $data])) {
wp_send_json_success(); // 成功
} else {
wp_send_json_error(‘データの追加に失敗しました。’); // 失敗
}
} else {
wp_send_json_error(‘データが提供されていません。’); // データがない場合
}
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]);
wp_send_json_success();
break;
// 他のケース(update_dataなど)もここに追加する
}
wp_die(); // AJAXリクエストの終了
}
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’);
// ショートコードの作成
function my_custom_plugin_shortcode() {
ob_start(); // 出力バッファリングを開始
// HTMLフォームを作成
?>
