Il y a un moment j’avais fait un tutoriel explicatif sur notre site WYCAN pour lier un ID de fichier uploadé dans les médias à un état de commande WooCommerce, cependant il fallait bidouiller du code et tout le monde n’est pas à l’aise avec cela !
J’ai donc décidé de faire un plugin, très simple et qui fait le job, pour vous permettre de sélectionner en back office un fichier de votre choix via les médias de WordPress, puis de sélectionner un état de commande.
Une fois cela fait, votre fichier sera envoyé automatiquement à vos clients en fonction de l’état de commande que vous avez choisi.
Cela peut être pratique pour joindre vos C.G.V par exemple (ou tout autre document/fichier)
Josselyn jayant & WYCAN
*/
// Ajouter un sous-menu à l'onglet WooCommerce
add_action('admin_menu', 'woo_cgv_menu');
function woo_cgv_menu() {
add_submenu_page('woocommerce', 'CGV', 'CGV', 'manage_options', 'woo-cgv', 'woo_cgv_page_callback');
}
function woo_cgv_page_callback() {
$option_name = 'woo_cgv_file_id';
$order_status_option_name = 'woo_cgv_order_status';
if(isset($_POST['submit'])) {
if(isset($_POST['media_attachment_id'])) {
update_option($option_name, absint($_POST['media_attachment_id']));
}
if(isset($_POST['order_status'])) {
update_option($order_status_option_name, sanitize_text_field($_POST['order_status']));
}
}
if(isset($_POST['delete_file'])) {
delete_option($option_name);
}
$media_id = get_option($option_name);
$selected_status = get_option($order_status_option_name);
echo ' ';
}
function woo_cgv_admin_scripts() {
wp_enqueue_media();
wp_enqueue_script('woo-cgv-media-upload', plugins_url('media-upload.js', __FILE__), array('jquery'));
}
add_action('admin_enqueue_scripts', 'woo_cgv_admin_scripts');
// Ajout du CGV à l'e-mail en fonction de l'état de la commande
add_filter('woocommerce_email_attachments', 'attach_cgv_to_email', 10, 3);
function attach_cgv_to_email($attachments, $email_id, $order) {
$status = 'wc-' . $order->get_status();
$allowed_status = get_option('woo_cgv_order_status');
$media_id = get_option('woo_cgv_file_id');
if ($media_id && $status == $allowed_status && 'customer_' . $status . '_order' == $email_id) {
$attachments[] = get_attached_file($media_id);
}
return $attachments;
}
?>
jQuery(document).ready(function($){
var mediaUploader;
$('#upload_image_button').click(function(e) {
e.preventDefault();
if (mediaUploader) {
mediaUploader.open();
return;
}
mediaUploader = wp.media.frames.file_frame = wp.media({
title: 'Choose File',
button: {
text: 'Choose File'
}, multiple: false });
mediaUploader.on('select', function() {
var attachment = mediaUploader.state().get('selection').first().toJSON();
$('#media_attachment_id').val(attachment.id);
});
mediaUploader.open();
});
});
2 Responses
Bonjour,
Super idée, mais malheureusement au mois de février, 2024, ce plugin n’est plus compatible.
En avez vous fait une mise à jour, je suis intéressé
Bonjour Christian, c’est à dire quel est le soucis rencontré svp ?
Si c’est une erreur lors de l’upload de l’archive il faut ajouter dans votre functions.php du thème enfant cela :
/* Compatibilité Mac/ZIP dernière MAJ WordPress */
add_filter( 'unzip_file_use_ziparchive', '__return_false' );
C’est un problème de compatibilité entre MAC et la dernière version de WordPress, tant qu’il n’y a pas de mise à jour hélas nous ne pouvons rien faire de plus.
Tenez moi informé si cela fonctionne, car je ne rencontre pas d’autres soucis à priori sur l’extension 🙂