- Statut : non résolu
- Ce sujet contient 50 réponses, 15 participants et a été mis à jour pour la dernière fois par joy, le il y a 7 années et 2 mois.
-
AuteurMessages
-
14 janvier 2016 à 6 h 46 min #558448
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.
14 janvier 2016 à 6 h 48 min #1037726Oup’s il manque une ‘ mais elle est dans mon code
14 janvier 2016 à 23 h 34 min #1037727essayez 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 souhaitezid, ‘_field_mondial_relay’, true );
if (« » !== $_field_mondial_relay) {
$address[« first_name »] = $_field_mondial_relay;
}
return $address;
},10, 2);15 janvier 2016 à 1 h 44 min #1037728if (!empty( get machin ) )
!empty() est le moyen le plus sûr de tester qu’il y a des données.
15 janvier 2016 à 6 h 01 min #1037729Bonjour,
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 !15 janvier 2016 à 7 h 45 min #1037730Vous 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))
15 janvier 2016 à 7 h 48 min #1037731Effectivement Luciole ! dans mon exemple je me suis trompé mais cependant même avec les paranthèses celà ne fonctionnait pas.
Merci15 janvier 2016 à 9 h 25 min #1037732le 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éesen 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
15 janvier 2016 à 9 h 29 min #1037733C’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 !!!15 janvier 2016 à 11 h 49 min #1037734yaurait moyen de profiter de ton plugin ?
merci15 janvier 2016 à 12 h 02 min #1037735Tu 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?
18 janvier 2016 à 14 h 53 min #1037736J’ai deux site qui fonctionnent avec livraisons.
Et perso j’aime bien Mondial Relay pour la facilité à livrer où on veut, et pour moins cher18 janvier 2016 à 15 h 00 min #1037737Espoontintin lit tes MP
4 octobre 2016 à 16 h 02 min #1571461Bonjour Mickael062!
Finalement, as tu mis ton plugin MR sur WordPress? Je recherche désespérément ce type de plugin … !
Belle journée!
8 octobre 2016 à 12 h 32 min #1572097Il 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.
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.