// 1. Register shortcode
add_shortcode('user_image_upload', 'user_image_upload_form');
function user_image_upload_form() {
// Only for logged in users
if (!is_user_logged_in()) return 'Please log in to upload images';
ob_start();
?>
<form method="post" enctype="multipart/form-data">
<?php wp_nonce_field('user_image_upload_action', 'user_image_upload_nonce'); ?>
<input type="file" name="user_image" accept="image/*" required>
<input type="submit" value="Upload Image">
</form>
<?php
return ob_get_clean();
}
// 2. Handle submission
add_action('init', 'handle_user_image_upload');
function handle_user_image_upload() {
if (!isset($_POST['user_image_upload_nonce']) return;
// Verify nonce
if (!wp_verify_nonce($_POST['user_image_upload_nonce'], 'user_image_upload_action')) return;
// Check user is logged in
if (!is_user_logged_in()) return;
$user_id = get_current_user_id();
// 3. Process upload
require_once(ABSPATH . 'wp-admin/includes/image.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/media.php');
$attachment_id = media_handle_upload('user_image', 0);
if (is_wp_error($attachment_id)) {
// Handle error
} else {
// 4. Store user meta
update_user_meta($user_id, 'user_uploaded_image_id', $attachment_id);
update_user_meta($user_id, 'user_uploaded_image_date', time());
}
}