Merhabalar sıfırdan bir şirket içi toplantı takvim eklentisi yaptım. Her şey okey fakat bir sorun var senaryo şu şekilde.
1. Giriş yapan kullanıcı eklediği toplantıları toplantılarım sayfasında kendi eklediği toplantıları görüntüleyebiliyor.
2. Görüntülediği zaman revize etceği zaman sadece kendi eklediği toplantıları revize etmesi gerekiyor.
3. Kendi eklediği toplantılar görüntüleniyor fakat revize edeceği zaman nonce hatası alıyorum.

UPDATE KODLARI

function update_meeting() {
    global $wpdb;
    $wpdb->show_errors();
    
    error_log('========= UPDATE MEETING DEBUG =========');
    error_log('POST Verileri: ' . print_r($_POST, true));
    
    try {
        
        check_ajax_referer('update_meeting', 'nonce');
        
      
        $current_user_id = get_current_user_id();
        error_log('Kullanıcı ID: ' . $current_user_id);
        
        if (!$current_user_id) {
            throw new Exception('Lütfen oturum açın.');
        }
        
        
        $required_fields = ['meeting_id', 'title', 'room_id', 'start_date', 'end_date'];
        $missing_fields = [];
        
        foreach ($required_fields as $field) {
            if (empty($_POST[$field])) {
                $missing_fields[] = $field;
            }
        }
        
        if (!empty($missing_fields)) {
            error_log('Eksik alanlar: ' . implode(', ', $missing_fields));
            throw new Exception('Lütfen tüm gerekli alanları doldurun: ' . implode(', ', $missing_fields));
        }
        
        
        $meeting_id = intval($_POST['meeting_id']);
        $title = sanitize_text_field($_POST['title']);
        $description = isset($_POST['description']) ? sanitize_textarea_field($_POST['description']) : '';
        $room_id = intval($_POST['room_id']);
        $start_date = sanitize_text_field($_POST['start_date']);
        $end_date = sanitize_text_field($_POST['end_date']);
        $attendees = isset($_POST['attendees']) ? array_map('intval', (array)$_POST['attendees']) : [];
        
      
        $meeting = $wpdb->get_row($wpdb->prepare(
            "SELECT * FROM {$wpdb->prefix}meetings WHERE id = %d",
            $meeting_id
        ));
        
        if (!$meeting) {
            throw new Exception('Toplantı bulunamadı.');
        }
        
      
        $is_owner = ($meeting->created_by == $current_user_id);
        $is_admin = current_user_can('manage_options');
        
        if (!$is_owner && !$is_admin) {
            throw new Exception('Bu toplantıyı güncelleme yetkiniz yok.');
        }
        
        
        $wpdb->query('START TRANSACTION');
        
        
        $update_result = $wpdb->update(
            $wpdb->prefix . 'meetings',
            array(
                'title' => $title,
                'description' => $description,
                'room_id' => $room_id,
                'meeting_date' => $start_date,
                'end_date' => $end_date,
                'updated_at' => current_time('mysql')
            ),
            array('id' => $meeting_id),
            array('%s', '%s', '%d', '%s', '%s', '%s'),
            array('%d')
        );
        
        if ($update_result === false) {
            throw new Exception('Toplantı güncellenirken bir hata oluştu.');
        }
        
        
        $wpdb->delete($wpdb->prefix . 'meeting_attendees', array('meeting_id' => $meeting_id));
        
        if (!empty($attendees)) {
            foreach ($attendees as $user_id) {
                $wpdb->insert(
                    $wpdb->prefix . 'meeting_attendees',
                    array(
                        'meeting_id' => $meeting_id,
                        'user_id' => $user_id,
                        'status' => 1,
                        'created_at' => current_time('mysql')
                    ),
                    array('%d', '%d', '%d', '%s')
                );
            }
        }
        
        
        $wpdb->query('COMMIT');
        wp_send_json_success('Toplantı başarıyla güncellendi.');
        
    } catch (Exception $e) {
        $wpdb->query('ROLLBACK');
        error_log('Hata: ' . $e->getMessage());
        wp_send_json_error($e->getMessage());
    }
}
add_action('wp_ajax_update_meeting', 'update_meeting');