Ce code vous permettra d’ajouter un nouvel onglet dans les données du produit à votre produit woocommerce et de téléverser un fichier via la bibliothèque multimédia WordPress.
Ensuite, lorsque vos clients passeront une commande et que la commande sera en cours, ils recevront le fichier dans l’e-mail.
Sur le corps du courrier et également en fichier joint.
Super, non ? 🙂
Voici le code complet du plugin
Josselyn jayant & WYCAN
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
// Ajouter l'onglet
add_filter('woocommerce_product_data_tabs', 'add_upload_file_tab', 50, 1);
function add_upload_file_tab($tabs) {
$tabs['upload_file'] = array(
'label' => __('Téléverser un fichier', 'woocommerce'),
'target' => 'upload_file_options',
'class' => array(),
);
return $tabs;
}
// Ajouter le contenu de l'onglet
add_action('woocommerce_product_data_panels', 'upload_file_tab_content');
function upload_file_tab_content() {
global $post;
$file_url = get_post_meta($post->ID, '_uploaded_file', true);
?>
get_items();
foreach ($items as $item) {
$product_id = $item->get_product_id();
$file_url = get_post_meta($product_id, '_uploaded_file', true);
if ($file_url) {
$file_path = get_attached_file(get_attachment_id_by_url($file_url));
if ($file_path) {
$attachments[] = $file_path;
}
}
}
}
return $attachments;
}
// Ajouter le lien de téléchargement dans l'e-mail de confirmation
add_action('woocommerce_email_after_order_table', 'add_file_link_to_order_email', 10, 4);
function add_file_link_to_order_email($order, $sent_to_admin, $plain_text, $email) {
if ($email->id == 'customer_processing_order') {
$items = $order->get_items();
foreach ($items as $item) {
$product_id = $item->get_product_id();
$file_url = get_post_meta($product_id, '_uploaded_file', true);
if ($file_url) {
echo "Fichier lié à votre produit : " . $item->get_name() . "
";
if ($plain_text) {
echo "Télécharger: " . $file_url . "\n";
} else {
echo "Télécharger
";
}
}
}
}
}
// Fonction pour récupérer l'ID d'une pièce jointe depuis son URL
function get_attachment_id_by_url($url) {
$id = attachment_url_to_postid($url);
if ($id) {
return $id;
}
return false;
}
// Ajouter l'icône "dashicons-upload"
function custom_admin_style() {
echo '';
}
add_action('admin_head', 'custom_admin_style');
6 réponses
Bonjour. Code et plugin sympathique.
Est-ce possible nd’envoyer le pièce jointe avec le statut « terminé » et non « en cours » ?
Merci
Salut Arno 🙂
Actuellement ton code se branche sur l’email client “commande en cours de traitement” (customer_processing_order).
Pour qu’il envoie la pièce jointe quand la commande est terminée, il faut viser l’email “commande terminée” (customer_completed_order).
Tu as 2 endroits à modifier :
Ligne 88 et 109 😉
Josselyn. Merci, je n’avais pas vu ta réponse et je l’avais modifié 😉en fouinant.
Si j’ai 2 ou 3 fichiers à envoyer, quelle serait la solution ?
Bonjour. Mon commentaire a disparu 😥
Je demandais si tu avais une idée pour envoyer 2 ou 3 documents ?
Bonjour,
Il n’a pas disparu, il a tout simplement été envoyé avec une autre adresse mail donc il était en attente de validation.
Cela doit être faisable, mais il va falloir adapter le code pour le personnaliser en fonction de tes besoins.
Je peux m’en charger sur devis bien entendu.
Pourquoi pas tout simplement faire un PDF avec plusieurs pages et inclure cela dedans ?
ah, pas bête..😏
Je reviens vers toi en cas de besoin