Création plugin Mondial Relay (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 51)
  • Auteur
    Messages
  • #558448
    Mickael062
    Membre
    Initié WordPress
    34 contributions

    Bonjour,
    J’ ai créé un plugin Pour Mondial Relay, tous fonctionne correctement cependant il me reste une fonction qui me donne du fil à retordre, je suis sur que c’est tout bête mais bon…
    Je dois récupérer mon custom field pour le remplacer par l’adresse de livraison dans le backoffice et l’e-mail.
    Je fais ça :

    if ( get_post_meta( $post_id, ‘_field_mondial_relay’,true ) )  {
    add_filter( ‘woocommerce_order_formatted_shipping_address’ , woo_custom_order_formatted_shipping_address’,10,2 );

    function woo_custom_order_formatted_shipping_address($address, $wc_order) {
    $address = array(
    ‘first_name’ => get_post_meta( $wc_order->id, ‘_field_mondial_relay’, true ),
    );
    return $address;
    }}

    Si je retire la condition if ça marche très bien mais toute les commandes qui ne sont pas Mondial relay non pas leur adresse de livraison par defaut.
    Je voudrai exécuter cette fonction si mon custom field n’est pas vide.

    Merci à toutes personnes qui pourra éclairer ma lanterne.

    #1037726
    Mickael062
    Membre
    Initié WordPress
    34 contributions

    Oup’s il manque une ‘ mais elle est dans mon code

    #1037727
    mathieu789
    Participant
    Maître WordPress
    1082 contributions

    essayez quelque chose comme le code suivant

    pour le « if » dans mon code je me suis inspiré de ce que vous avez mis dans le 1er message mais je ne sais pas si c’est correct
    pour vérifier, je vous conseille d’afficher le contenu de $adress avant et après le « if » et vous verrez si le contenu est comme vous le souhaitez

    id, ‘_field_mondial_relay’, true );

    if («  » !== $_field_mondial_relay) {
    $address[« first_name »] = $_field_mondial_relay;
    }


    return $address;

    },10, 2);

    #1037728
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    if (!empty( get machin ) )

    !empty() est le moyen le plus sûr de tester qu’il y a des données.

    #1037729
    Mickael062
    Membre
    Initié WordPress
    34 contributions

    Bonjour,
    Mathieu9512, alors la chapeau ! j’ai juste fait copier /coller et bingo ça fonctionne à merveille 👏 ! Il me reste plus qu’à fignoler mais c’est génial.

    PHP c’est comme le tiercé dans le désordre ça marche pas. Mon code était presque bon.

    Lumière de Lune, J’avais essayé d’afficher $address avant et après, mais rien ne s’affichait parce que je le mettais en dehors de la fonction et je ne savais pas comment coupler le filtre avec la fonction.
    Pour vous donner une idée je faisait ça :

    global $woocommerce, $post, $wc_order; 

    $machin = get_post_meta( $wc_order->id, ‘_field_mondial_relay’, true );

    if (!empty()$machin ) ) {

    add_filter( ‘woocommerce_order_formatted_shipping_address’ , woo_custom_order_formatted_shipping_address’,10,2 );

    function woo_custom_order_formatted_shipping_address($address, $wc_order) {

    echo $machin;

    $address = array(
    ‘first_name’ => get_post_meta( $wc_order->id, ‘_field_mondial_relay’, true ), ); return $address;

    echo $machin ;

    }}

    Mais $machin n’avait pas de valeur et je pense savoir pourquoi.
    Dans  » function woo_custom_order_formatted_shipping_address($address, $wc_order)  » il il y a $address, $wc_order qui permet de récupérer la valeur « get_post_meta( $wc_order->id, ‘_field_mondial_relay’, true ) »
    La vrai question pour moi maintenant c’est pourquoi « global $woocommerce, $post, $wc_order; $machin = get_post_meta( $wc_order->id, ‘_field_mondial_relay’, true ); » ne récupère pas la valeur.?

    Je souhaiterai approfondir et améliorer mes connaissances mais pas facile de trouver où apprendre tous ça !?
    Merci beaucoup !

    #1037730
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    Vous avez mal parenthésé le test, sur votre code empty() n’a pas d’argument qui lui sont fournis :

    if (!empty()$machin ) )

    Il faut tester si $machin est vide, donc $machin est un argument de la fonction empty() !

    if (!empty($machin))

    #1037731
    Mickael062
    Membre
    Initié WordPress
    34 contributions

    Effectivement Luciole ! dans mon exemple je me suis trompé mais cependant même avec les paranthèses celà ne fonctionnait pas.
    Merci

    #1037732
    mathieu789
    Participant
    Maître WordPress
    1082 contributions

    le code qui commence par « global $woocommerce, $post, $wc_order;  » est dans un fichier de l’extension et ce fichier est chargé au début de chaque page à un moment où ces variables n’existent pas
    par contre au moment du filtre « woocommerce_order_formatted_shipping_address » ces variables existent avec le contenu prévu donc la fonction appelée par le filtre peut travailler avec ces données

    en résumé le code des extensions ne contient que des appels à « add_action » et « add_filter » pour mettre en attente des traitements qui se feront au courant de la page, si les crochets et les filtres correspondants sont appelés

    #1037733
    Mickael062
    Membre
    Initié WordPress
    34 contributions

    C’est donc pour ça que ton code fonctionne tu as mis la fonction dans le add_filter !?
    Enfin je me comprend, ton code ma super bien éclairé et ton explication m’a bien confirmé ce que je pensait.
    Merci Beaucoup !!!

    #1037734
    espoontintin
    Participant
    Maître WordPress
    816 contributions

    yaurait moyen de profiter de ton plugin ?
    merci

    #1037735
    Mickael062
    Membre
    Initié WordPress
    34 contributions

    Tu en as besoin pour toi ? Je me tâte à le mettre sur WordPress car il faut faire un minimum de support et j’ai peut de temps pour ça?

    #1037736
    espoontintin
    Participant
    Maître WordPress
    816 contributions

    J’ai deux site qui fonctionnent avec livraisons.
    Et perso j’aime bien Mondial Relay pour la facilité à livrer où on veut, et pour moins cher

    #1037737
    Mickael062
    Membre
    Initié WordPress
    34 contributions

    Espoontintin lit tes MP

    #1571461
    julie
    Participant
    Initié WordPress
    2 contributions

    Bonjour Mickael062!

    Finalement, as tu mis ton plugin MR sur WordPress? Je recherche désespérément ce type de plugin … !

    Belle journée!

    #1572097
    Rocou
    Participant
    Chevalier WordPress
    124 contributions

    Il existe déjà un plugin Mondial Relay qui est très bien fait,  fonctionne très bien et avec un très bon support:

    https://www.mondialrelay-woocommerce.com

    Il souffre de deux gros défauts :

    1- il est très cher

    2- il est automatiquement invalidé à chaque version de woocommerce. Ce qui fait que si vous avez des commandes avant la mise à jour du plugin, les livraisons sont gratuites… Quand la licence expire, le plugin ne fonctionne plus si vous faite une MAJ de woocommerce…

    Si vous êtes prêt à payer, il est excellent. Je m’en suis servi longtemps mais j’avais quand même l’impression d’être une vache à lait malgré la qualité de l’outil.

    Sinon, il y a le plugin envoimoinscher qui gère Mondial Relay, Relais Colis, et toute une tripotée de transporteurs. C’est celui que j’utilise aujourd’hui et j’en suis très content.

    Il est gratuit, le SAV est au top, une seule facture de transport par mois, c’est génial.

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