J'ai développé un script qui permet aux utilisateurs enregistrés du front-end de créer leurs propres articles, avec une image vedette pour chaque article.
Bien que j'aie achevé le processus global, le problème qui se pose maintenant est le redimensionnement de l'image.
Le script qui manipule les images est le suivant :
if(isset($files['rcp_user_logo']) && $files['rcp_user_logo']['error'] == 0)
{
$uploadDir = wp_upload_dir();
$updoadBase = $uploadDir['basedir'];
$uploadURL = $uploadDir['baseurl'];
$uploadLogos = $updoadBase . DIRECTORY_SEPARATOR . 'LfirmLogos' . DIRECTORY_SEPARATOR;
$uploadLogosURL = $uploadURL . '/LfirmLogos/';
$dir_exists = false; // Flag for directory existance
if(($dir_exists = is_dir($uploadLogos)) == false) // If the upload dir is not exists
{
$dir_exists = mkdir($uploadLogos, 0755); // Try to create the dir with 0755 permissions
// If the dir will be successfully created
// the $dir_exists will be set to true
// otherwise will be set to false
}
else
{
$dir_exists = true; // If upload dir exists then set
// the $dir_exists to true
}
if($dir_exists == true)
{
// Set the tmpFile to the temporary uploaded file path
$tmpFile = $files['rcp_user_logo']['tmp_name'];
// Set the new file to upload directory and name the file after the custom post ID
$newFile = $uploadLogos . $new_id . '-' . $files['rcp_user_logo']['name'];
// Set the new file URL to updaload directory URL and name the file after the custom post ID
$newFileURL = $uploadLogosURL . $new_id . '-' . $files['rcp_user_logo']['name'];
if(move_uploaded_file($tmpFile, $newFile)) // If file has been
{
$wp_filetype = wp_check_filetype($files['rcp_user_logo']['name']);
$attachment = array(
'guid' => $newFileURL,
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_title($files['rcp_user_logo']['name']),
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment($attachment, $newFileURL, $new_id);
if($attachment_id != 0 )
{
if(!function_exists('wp_generate_attachment_metadata'))
{
include( ABSPATH . 'wp-admin/includes/image.php' );
}
$attachment_data = wp_generate_attachment_metadata($attachment_id, $newFileURL);
$result = wp_update_attachment_metadata($attachment_id, $attachment_data);
$result = update_post_meta($new_id, '_thumbnail_id', $attachment_id);
}
}
}
}
NOTE : Afin de garder mes logos séparés des images par défaut de WordPress, j'ai créé mon propre catalogue sous /wp-content/uploads/ et je ne sais pas si c'est une raison pour empêcher le redimensionnement des images.
NOTE : $new_id est l'ID du message créé par programme dans le code des aperçus.
NOTE : J'ai également utilisé le plugin "AJAX Thumbnail Rebuild" mais toujours aucun effet sur les images. Il ne peut pas non plus redimensionner les images.
NOTE : Les images qui sont téléchargées par la zone d'administration sont correctement redimensionnées.
Avez-vous une idée de la façon de résoudre ce problème ?
Bien à vous