WooFrance Dépannage et support WordPress WooCommerce Forums Forum de Support WooCommerce Téléchargement de fichiers spécifiques par clients

Étiqueté : 

  • Ce sujet est vide.
20 sujets de 1 à 20 (sur un total de 23)
  • Auteur
    Messages
  • #43647
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    Bonjour @ tous,

    Voilà, je souhaiterais proposer des fichiers personnels à télécharger pour chaque client lorsqu’une commande a été effectuée. Car en effet, une fois le client a passé sa commande, je souhaiterais une fois sa commande validée et terminée, afficher un lien de téléchargement vers un fichier ZIP personnel réservé au client. L’idéal serait aussi des les afficher dans la partie « Téléchargement » du compte client…

    J’ai donc besoin de vos lumières et également si vous connaissez un plugin qui pourrait gérer cela?

    Je suis tout ouïe!

    Je remercie par avance pour votre aide généreuse!

    Cordialement,

    Nicolas S.

    depanagewp
    #43663
    Mathieu
    Participant
    Points: 1,315 pts
    Membre 2 étoiles

    Une solution pour rajouter un produit en téléchargement, serait de créer un produit privé pour chaque client.
    Dans ce produit que vous configurez en téléchargeable, vous rajoutez le fichier personnalisé. Ensuite sur la page d’administration d’une commande validée, vous rajoutez ce produit tout en bas de la page et cela fera apparaitre le fichier en téléchargement dans l’espace client.

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    depanagewp
    #43666
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    Grand merci Mathieu!

    Mais existe-t-il pas une alternative à cela, afin d’éviter de « blinder » de produits virtuels téléchargeables privés ? en plus des produits achetables car ça risque d’être l’enfer à la longue…
    Y a-t-il pas la possibilité de lier cela à un autre module comme « Download Monitor » (par exemple), où je pourrais gérer tous les uploads à télécharger pour chaque clients ?

    Merci en tout cas de l’idée…

    Cordialement,

    Nicolas S.

    depanagewp
    #44573
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    Bonsoir,

    Je reviens, car j’ai testé l’idée de Mathieu, sur le fond c’est bien, mais le problème et c’est ce que je craignais, je dois bien créer un produit virtuel téléchargeable pour chaque client qui me commande une prestation.

    Car le client commande une prestation, puis après commande, je dois fournir un ZIP je dois incorporer dans un nouveau produit comme « virtuel » et « téléchargeable », puis le lier dans la commande du client et basculer la commande en mode « Terminée »… pas pratique et simple, car du coup, une page produit vide existe qui mène à rien…

    D’où ma question précédente, si il n’existe pas une astuce permettant de faire quasi la même chose mais depuis un centre de téléchargement comme le plugin « Download Monitor » où je centraliserai tous mes fichiers ZIP et les proposeraient dans la rubrique « Téléchargements » du compte client…

    Merci pour votre aide si précieuse !

    Nicolas.

    depanagewp
    #44578
    Fred – WooFrance
    Maître des clés
    Points: 7,413 pts
    Certifié
    Membre 2 étoiles

    Bonjour

    Dans tout les cas il vous faudra mettre en place un téléchargement personnalisé par client, donc même avec un plugin dédié il faudra créer le téléchargement.

    Autant mettre vos Zip dans les médias en envoyer le lien personnalisé au lien via Email ou via la messagerie de commande WooCommerce

     

    Sinon des plugin comme ceu ci peuvent être configurer en ce sens  :

    Advanced Access Manager

    WooCommerce Memberships

    depanagewp
    #44587
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    Bonjour,

    Merci Fred, pour votre réponse.

    Mais, comment pourrais-je lister les téléchargements dédiés disponibles au client dans la partie « Téléchargements » de son compte WooCommerce ? telle est la question, car j’aimerais juste lui envoyer un mail que son téléchargement du ZIP est disponible dans son espace…

    Cordialement,

    Nicolas

    depanagewp
    #44599
    Fred – WooFrance
    Maître des clés
    Points: 7,413 pts
    Certifié
    Membre 2 étoiles

    Avec un système genre membership vous pouvez faire quelque chose dans le genre, mais bon ça revient a faire un plan par membre, c’est un peu lourd

    WooCommerce Memberships

    depanagewp
    #44605
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    Bonsoir, oui mais ça risque de faire doublon d’avoir des identifiants pour le téléchargement et des identifiants pour la boutique… donc effectivement lourd en théorie… Si seulement il y aurait une astuce pour lier une commande à un téléchargement comme Download Monitor et donc les faire apparaître dans la page  » Téléchargements »

    En vous remerciant infiniment pour votre aide

    Cordialement,

    Nico.

     

     

    depanagewp
    #46346
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    Bonjour,

    En attendant une réponse ou une solution…

    Si je crée un article dédié téléchargeable pour chacun de mes clients, y a-t-il un moyen (via un snippet, peut-être) de désactiver le lien qui amène au produit, lors qu’on est dans la partie « Téléchargements », car ce lien est inutile, seul le bouton « Télécharger » l’est.

    En vous remerciant,

    Cordialement,
    Nico.

    depanagewp
    #46347
    Mathieu
    Participant
    Points: 1,315 pts
    Membre 2 étoiles

    Vous pouvez personnaliser cela dans le fichier « woocommerce/order/order-downloads.php » dans votre thème.
    Si ce fichier n’existe pas, vous pouvez le créer à partir du fichier qui se trouve dans le répertoire de l’extension : « wp-content/plugins/woocommerce/templates/order/order-downloads.php »

    Il est aussi possible de modifier cet affichage avec plusieurs filtres mais cela dépend des autres produits. Est ce que vous avez certains produits qui auront des fichiers téléchargeables classiques et donc le lien vers leur fiche produit devra rester ?

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    depanagewp
    #46355
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    Bonjour,

    Merci Mathieu, effectivement c’est ce que j’ai pensé…
    J’ai fait simplement fais une copie du fichier template dans mon thème, et je l’ai personnalisé avec un bout de code que j’avais fait en PHP, maintenant je peux afficher un bouton « Télécharger » associé depuis l’extension gratuite « Download Monitor » et un champ perso pour stocker l’id du download pour chaque commande….

    Merci,

    Cordialement,

    Nicolas S.

    depanagewp
    #46356
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    Le gros bémol, c’est que le lien de téléchargement dispo pour le client X, est valable également pour les clients « Y, Z … » si il connait l’ID… ou le fait au hasard… du moment qu’il est connecté sur son compte ; ce qui n’est absolument pas bon!

    Y a-t-il un moyen de limiter et sécuriser ça ?

    Merci,

    Nico.

    depanagewp
    #46358
    Mathieu
    Participant
    Points: 1,315 pts
    Membre 2 étoiles

    C’est bizarre, sur mon site de test le lien est du genre « ?download_file=1574&order=wc_order_ABC&email=ADRESSE_EMAIL&key=c194… ».
    Et si le clé et le code de commande ne correspond pas à l’identifiant du fichier, il y a un message « Lien de téléchargement invalide ».

    Est ce que vos liens de téléchargement sont du même genre ?
    Avez-vous bien les dernières versions de WordPress et WooCommerce ?

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    depanagewp
    #46369
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    bonsoir,

    attention je n’utilise pas un produit téléchargeable mais via un plugin

    je vais tester avec WP Download Manager, d’après ce que je lis…on peut associer un téléchargement à une commande ET à un client… et crypter ce lien…

    Cdt, Nico.

    depanagewp
    #46394
    Mathieu
    Participant
    Points: 1,315 pts
    Membre 2 étoiles

    ah désolé je n’avais pas vu le 1er message où vous parliez de Download Monitor.

    Je viens de tester WP Download Manager et après avoir installé l’extension, j’ai crée un nouveau téléchargement et j’ai passé 5 minutes à chercher le lien de téléchargement. Et je ne l’ai pas trouvé donc bonsoir l’extension.
    Et bonjour Download Monitor qui est beaucoup plus clair et qui est personnalisable facilement. J’ai testé un code qui rajoute une clé de vérification au téléchargement et ça devrait être ce dont vous avez besoin :

    add_action("save_post_dlm_download", function ($post_ID, \WP_Post $post, $update) {
        
        // enregistre une clé à la création
        if (!$update) {
            $cle = hash("sha256", microtime() . mt_rand());
            update_post_meta($post_ID, "cle", $cle);
        }
        
    }, 10, 3);
    
    add_filter("dlm_download_get_the_download_link", function ($link, $downloadManager, $version_id) {
        
        // ajouter la clé au lien de téléchargement
        
        $cle = get_post_meta($downloadManager->id, "cle", TRUE);
        
        $link = add_query_arg([
            "cle" => $cle,
        ], $link);
        
        
        return $link;
        
    }, 10, 3);
    
    add_filter("dlm_can_download", function ($can_download, $downloadManager) {
        
        // vérification de la clé
        
        if ($can_download) {
            
            if (!isset($_GET["cle"])) {
                $can_download = FALSE;
            } else {
                
                $cle = get_post_meta($downloadManager->id, "cle", TRUE);
                
                if ($cle !== $_GET["cle"]) {
                    $can_download = FALSE;
                }
            }
        }
        
        
        return $can_download;
        
    }, 10, 2);

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    depanagewp
    #46406
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    Bonsoir Mathieu, et grand merci !!!

    Je présume qu’il faut que je copie et colle ton code dans le fichier functions.php de mon thème ?

    En ce qui concerne de récupérer l’ID de téléchargement, j’ai donc créé un Custom Field nommé custom_file avec ACF plugin, dans mes commandes, de façon à juste indiquer dedans l’ID de téléchargement à associer à la commande…
    De façon à ce que le client voit lister dans la page « Téléchargement » tous les boutons avec comme lien, un lien de téléchargement sécurisé vers le fichier ZIP en question dont il a seulement l’autorisation et pas d’autres membres !!!

    J’ai personnalisé la page downloads.php des templates dans mon thème également

    Voici la partie du code que j’ai actuellement, je n’ai pas réussi à mettre l’ID stocké dans ma Custom Field (custom_file) sur la commande de téléchargement, je n’arrive pas à trouver l’API correct pour ça, je suis sûr que je touche le but …

    
    <?php elseif ( 'order-actions' === $column_id ) : ?>
    <?php
    $actions = wc_get_account_orders_actions( $order );
    
    if ( ! empty( $actions ) ) {
    if ( $file_id = (int) get_post_meta( $order->id, 'custom_file', true ) ) {
    echo "download_link($file_id)."" class="button ' . sanitize_html_class( $key ) . '">Télécharger";
    }
    }
    ?><?php endif; ?>

    Encore un grand merci pour ton aide !

    Cdt,

    Nico.

    depanagewp
    #46407
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    Re,

    Bon, avec un peu de temps, j’ai pu finalement afficher la clé dans l’URL mais …

    L’utilisateur peut refiler le lien exact à un autre membre, il peut malheureusement accéder au téléchargement, chose que je ne voudrais pas… ou j’ai oublié de faire quelque chose ???Revoici mon code :

    <?php elseif ( 'order-actions' === $column_id ) : ?>
        <?php
            $actions = wc_get_account_orders_actions( $order );
            if (  $order->has_status( 'completed' ) ) {
                if ( $file_id = (int) get_post_meta( $order->id, 'custom_file', true ) ) {    
                    /*echo '';*/
                    
                    $content .= do_shortcode( '[download id="' . $file_id . '"]' );
                    echo $content;
                    
                }
            }
            else { 
                echo '';
            }
        ?>
    <?php endif;?>

    Peut-être que c’est mon « do_shortcode » le fautif ? peut-être intégrer le check de l’email du membre associé à la commande ? je ne sais pas….

    Merci,

    Cdt,

    Nico.

    depanagewp
    #46411
    Mathieu
    Participant
    Points: 1,315 pts
    Membre 2 étoiles

    Quand la personne télécharge le fichier, elle peux ensuite l’envoyer à n’importe qui donc je ne pense pas que cela apporte quelque chose de tester l’utilisateur qui télécharge.

    Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
    Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
    🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.

    depanagewp
    #46419
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    Bonjour Mathieu,

    Ahhh… donc, je pense qu’il y a un soucis dans le code… car j’ai créé 2 comptes différents, et le lien fonctionne pour les 2 🙁

    Et donc, comment appelle-t-on la fonction pour récupérer le lien ID ?

    Cdt,

    Nico

    depanagewp
    #46421
    mikosworld
    Participant
    Points: 66 pts
    Membre 2 étoiles

    J’oubliais, par contre, je tiens à avoir un check du membre quand même…

    Cdt,

    Nico.

    depanagewp
20 sujets de 1 à 20 (sur un total de 23)
  • Vous devez être connecté pour répondre à ce sujet.