prefix . ‘my_custom_data’; // wp_my_custom_data
$charset_collate = $wpdb->get_charset_collate();
$sql = “CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_login varchar(60) NOT NULL,
data text NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;”;
require_once(ABSPATH . ‘wp-admin/includes/upgrade.php’);
dbDelta($sql);
}
// AJAXリクエストの処理
add_action(‘wp_ajax_add_data’, ‘my_custom_ajax_handler’);
add_action(‘wp_ajax_nopriv_add_data’, ‘my_custom_ajax_handler’); // 未ログインユーザー用
function my_custom_ajax_handler() {
global $wpdb;
$data = isset($_POST[‘data’]) ? sanitize_text_field($_POST[‘data’]) : ”;
if ($data) {
$user_login = wp_get_current_user()->user_login;
if ($wpdb->insert($wpdb->prefix . ‘my_custom_data’, [‘user_login’ => $user_login, ‘data’ => $data]) === false) {
error_log(‘データの追加に失敗しました。エラー: ‘ . $wpdb->last_error);
wp_send_json_error([‘message’ => ‘データの追加に失敗しました。’, ‘error’ => $wpdb->last_error]);
} else {
wp_send_json_success([‘message’ => ‘データが正常に追加されました。’]);
}
} else {
error_log(‘データが提供されていません。’);
wp_send_json_error(‘データが提供されていません。’);
}
wp_die(); // AJAXリクエストの終了
}
// スクリプトの登録
add_action(‘wp_enqueue_scripts’, ‘my_custom_enqueue_scripts’);
function my_custom_enqueue_scripts() {
wp_enqueue_script(‘my-custom-ajax-script’, plugins_url(‘/ajax-script.js’, __FILE__), array(‘jquery’), null, true);
wp_localize_script(‘my-custom-ajax-script’, ‘my_ajax_object’, array(‘ajax_url’ => admin_url(‘admin-ajax.php’)));
}
// ショートコードの作成
add_shortcode(‘my_custom_form’, ‘my_custom_form_shortcode’);
// ショートコードの作成
add_shortcode(‘my_custom_form’, ‘my_custom_form_shortcode’);
function my_custom_form_shortcode() {
ob_start(); // 出力バッファリングを開始
?>
