Hello,

Pour un projet en PHP (plugin pour Wordpress), je dois récupérer une image depuis un formulaire de contact, l'intégrer dans l'espace Medias de Wordpress mais aussi dans un champ personnalisé en utilisant le plugin ACF configuré en mode image et ID de l'image.

J'utilise la dernière version de Wordpress et PHP 8.2.

J'ai donc codé ce programme mais cela ne fonctionne pas du tout. Est-ce possible d'avoir une petite aide de votre part si vous le pouvez bien évidemment. Voici mon bout de code qui devait faire cela simplement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
// Intercepter les soumissions de formulaire Contact Form 7
function openai_cf7_form_submitted($cf7) {
  // Récupérer le fichier d'image
  $uploaded_image = isset($_FILES['image1']) ? $_FILES['image1'] : '';
 
  // Vérifier si un fichier d'image a été téléchargé
  if (!empty($uploaded_image) && $uploaded_image['error'] === 0) {
    // Insérer l'image dans la bibliothèque des médias
    $attachment_id = insert_image_to_media_library($uploaded_image);
 
    // Vérifier si l'insertion de l'image a réussi
    if ($attachment_id) {
      // Mettre à jour le champ personnalisé ACF avec l'ID de l'attachement
      $image_field_name = 'ai02'; // Remplacez par le nom de votre champ image
      update_field($image_field_name, array($attachment_id), 'options');
    }
  }
 
  error_log('Le formulaire a été soumis');
  error_log('Données soumises : ' . print_r($_POST, true));
}
add_action("wpcf7_before_send_mail", "openai_cf7_form_submitted");
 
function insert_image_to_media_library($uploaded_image) {
  $upload_dir = wp_upload_dir();
  $file_path = $upload_dir['path'] . '/' . basename($uploaded_image['name']);
 
  if (move_uploaded_file($uploaded_image['tmp_name'], $file_path)) {
    $attachment = array(
      'post_mime_type' => $uploaded_image['type'],
      'post_title' => sanitize_file_name($uploaded_image['name']),
      'post_content' => '',
      'post_status' => 'inherit'
    );
 
    $attachment_id = wp_insert_attachment($attachment, $file_path);
    if (!is_wp_error($attachment_id)) {
      require_once(ABSPATH . 'wp-admin/includes/image.php');
      $attachment_data = wp_generate_attachment_metadata($attachment_id, $file_path);
      wp_update_attachment_metadata($attachment_id, $attachment_data);
      return $attachment_id;
    }
  }
 
  error_log("Erreur lors du téléchargement de l'image dans la bibliothèque des médias.");
  return false;
}
Aussi, voici mes logs qui indique des warnings :
[29-Jun-2023 12:47:52 UTC] PHP Deprecated: rtrim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/******/******/wp-includes/formatting.php on line 2809
[29-Jun-2023 12:47:53 UTC] PHP Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /home/******/******/wp-includes/formatting.php on line 4303


Un grand merci ^^ David