8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Voila je me pose quelques questions lié aux formulaire sous WP.

Habituellement je développe tout en PHP mais sur ce projet j'ai la contrainte WP donc voici ma question.

Y a t'il un moyen de créer un formulaire avec Contact form, ninja form ou autre...
Celui ci serait un formulaire générique pour une demande de renseignement sur un produit.

Actuellement je ne vois pas comment récupérer l'information de la page précédente contenant le bouton "Demander un renseignement sur ce produit" sur mon message envoyé par formulaire de contact afin que mon client sache quel produit intéresse l'expéditeur.

J'espère que mes explications sont claires...

Merci d'avance pour vos retour et bonne journée à tous !
BranF5 a écrit :

Actuellement je ne vois pas comment récupérer l'information de la page précédente contenant le bouton "Demander un renseignement sur ce produit" sur mon message envoyé par formulaire de contact afin que mon client sache quel produit intéresse l'expéditeur..


Salut,

Peux-tu détaillés cette partie.. page précédente ? Renseignement produit késako ? merci Smiley smile
Salut Jencal,

En fait j'ai une page présentant un produit (Nom, texte, image pour faire simple).

Sur cette page j'ai un bouton "demander un renseignement pour ce produit" faisant un lien vers une page contenant un formulaire.

Je cherche à ce que le mail envoyé par ce formulaire contienne les informations de ma page produit (page précédente) sans avoir à créer un formulaire par page produit.

Est ce plus clair pour toi?
Je précise que si il y a une autre solution pour ce résultat de créer un formulaire générique à mes pages produits je suis preneur bien entendu.

Merci !
en faite : demander un renseignement pour ce produit - doit ouvrir une nouvelle page avec un formulaire "pré remplie" ? ou cela t'envoi directement un mail avec les infos ?

Parce que pour stocker les infos entres deux pages par exemple tu peux le faire en javascript avec les local storage ou session storage.
Idéalement ce ne serait pas du pré remplissage visible mais plutôt un champs en Hidden je pense et le mieux serait d'avoir un récap des infos produits au dessus du formulaire.

Genre :

Demande de renseignement sur un produit
Produit : Nom du produit

Suivi du formulaire :

Nom :
Société :
Mail :
Téléphone :

Validation

Ca ce serait le top !

Je ne m'y connais pas trop en local storage ou session storage javascript j'utilise en général des session PHP.

Peux tu m'expliquer avec un ptit bout de code?

Merci en tout cas pour ton aide.
La page qui affiche le produit, c'est quel type de page dans Worpdpress?

- une page single?
- un template spécifique?

ce que tu veux c'est que le visiteur reste sur la page du produit une fois le formulaire envoyé?

tu peux pas mettre le script Php dans ton template de telle sorte que la page se ré-exécute (param action="") une fois le formulaire soumis?
C'est une page sur un modèle spécifique utilisant ACF.

Le but est d'avoir le formulaire sur une page différente de la page de présentation de produit. Et le top une fois le formulaire validé de revenir sur la page de présentation de produit avec un message votre demande a bien été envoyé.

Je débute en WP, peut être y a t il une solution toute bete avec un ptit script php mais je bloque ^^

Merci !
Il n est pas finalisé mais je pense que l'on sera sur quelque chose de très simple du style :

Nom :
Société :
Mail :
Téléphone :

Merci !
Salut,

A première vue, je passerais les infos du produit dans l'url.
Genre le lien que tu as sur ta page produit ("Demander un renseignement sur ce produit") est le suivant : "/formulaire-de-demande/?product_id=123456&product_name=supernomdeproduit"

Ensuite, pour ton formulaire, tu utilises Contact Form 7 et tu "interceptes" les données $_GET dans un shortcode wpcf7 sur le hook wpcf7_init.

add_action('wpcf7_init', 'get_param_form_add_shortcode');
function get_param_form_add_shortcode(){
  wpcf7_add_shortcode( 'getparam', 'get_param_form', true);
}
function get_param_form( $atts ){

  if( !is_array($atts)){
    return '';
  }
  $param = $atts['name'];
  $param_value = isset($_GET[$atts['name']]) ? $_GET[$atts['name']] : '';

  $output = '<imput type="hidden" name="' . $param . '" value="' . $param_value . '">';

  return $output;
}


Tu utilises ensuite ton shortcode dans ton formulaire cf7 : [getparam product_id] : product_id est le nom du paramètre que recherches.

Tu peux bien sûr customiser tout ça et récupérer des infos de ton produit avec le product_id...

Pour la redirection après la soumission tu as un élément de réponse ici : http://contactform7.com/redirecting-to-another-url-after-submissions/

Bon code !
Modifié par MatthieuR (07 Mar 2016 - 23:31)
Merci Matthieu !

Je test ça cet après midi et je vous redis ce qu'il en est !

Bonne journée à tous
J'y suis presque les gars !

Une question se pose encore pour moi, puis je mettre mon id en paramètre GET et dans mon short code aller chercher les autres informations de cette page (title, ACF, ...)

Cela me permettrait d'éviter d'avoir trop de paramètre en URL.

L'idéal étant :

/?product_id=123456

=> champs hidden id
=> champs hidden nom
=> champs hidden reference

J'ai tenté de placer une récupération de post dans le short code mais je me retrouve avec une boucle infini...

Merci d'avance !
Je continu d'avancer !

Je fais actuellement mon test final pour des formulaires de contact agences. (test plus complexe que pour des produits)

Voila ou j'en suis :



/*Short code*/

add_action('wpcf7_init', 'get_param_form_add_shortcode');

function get_param_form_add_shortcode()
{
  wpcf7_add_shortcode( 'getparam', 'get_param_form', true);
}

function get_param_form( $atts )
{
  if( !is_array($atts)){ return ''; }
  $param = $atts['idagence'];
  $param_value = isset($_GET[$atts['name']]) ? $_GET[$atts['name']] : '';

	$agences = get_posts(array(
	'numberposts'	=> -1,
	'post_type'		=> 'post',
	'meta_key'		=> 'idagence',
	'meta_value'	=> intval($param_value)
	));

	$output='';
	foreach ($agences as $post) {
  	  $output .= '<imput type="hidden" name="'.$atts['name'].'" value="' .$param_value. '">';
  	  $output .= '<imput type="hidden" name="idpost" value="' .$post->ID. '">';
	  $output .= '<imput type="hidden" name="ville_agence" value="'.$post->post_title.'">';
	  $output .= '<imput type="hidden" name="mail_agence" value="'.get_field('mail',$post->ID).'">';
	  $output .= '<imput type="hidden" name="url_agence" value="'.get_field('url',$post->ID).'">';

	}
  return $output;
}


Maintenant mon soucis est de récupérer coté admin wordpress le contenu de mes champs : ville_agence / mail_agence / url_agence afin de les utiliser dans contact form 7.

Ils sont bien remplis dans mon code source mais j'aimerais que "ville_agence" et "url_agence" apparaisse dans le corps du mail et que le champs "mail_agence" soit utilisé comme destinataire de ce formulaire.

Merci d'avance pour votre aide !

Une fois ce cas de figure résolu je pense que tous les cas seront gérables dans les projets futurs !
Vite fait en passant...

A quoi te sert $param ? Car $atts['idagence'] n'existe pas je pense.
As-tu fais un var_dump($atts) pour voir ce qu'il y avait dedans ?

Sinon pour paramétrer ton destinataire il faut créer un autre shortcode avec un id wpcf7 genre [custom_shortcode recipient] et ensuite tu insères \[recipient\] dans ton champ "To" du paramètre de l'email.
Modifié par MatthieuR (09 Mar 2016 - 21:16)
Merci Matthieu, effectivement, $param ne sert plus dans mon code c'est un résidu de test.
Je vais chercher comme créer ce short code, je le posterais une fois que j'aurais réussi.

Si quelqu'un en à un sous la main hésitez pas Smiley cligne

Bonne journée à tous
Je suis arrivé au bout !

Pour ceux qui se poseraient la question voici la solution que j'ai fini par retenir :


/*Short code*/

add_action('wpcf7_init', 'get_param_form_add_shortcode');

function get_param_form_add_shortcode()
{
  wpcf7_add_shortcode( 'getparam', 'get_param_form', true);
}

function get_param_form( $atts )
{
  if( !is_array($atts)){ return ''; }
  $param = $atts['idagence'];
  $param_value = isset($_GET[$atts['name']]) ? $_GET[$atts['name']] : '';

	$agences = get_posts(array(
	'numberposts'	=> -1,
	'post_type'		=> 'post',
	'meta_key'		=> 'idagence',
	'meta_value'	=> intval($param_value)
	));

	$output='';
	foreach ($agences as $post) {
  	  $output .= '<imput type="hidden" name="'.$atts['name'].'" value="' .$param_value. '">';
  	  $output .= '<imput type="hidden" name="idpost" value="' .$post->ID. '">';
	  $output .= '<imput type="hidden" name="ville_agence" value="'.$post->post_title.'">';
	  $output .= '<imput type="hidden" name="mail_agence" value="'.get_field('mail',$post->ID).'">';
	  $output .= '<imput type="hidden" name="url_agence" value="'.get_field('url',$post->ID).'">';

	}
  return $output;
}


Et coté page, j'ai ajouté un jquery me permettant simplement de remplir automatiquement un champs mail que je masque :




<?php
    // Zone de récupération de l'info d'agence
	 $id = intval($_GET['idagence']);
	 
	 $posts = get_posts(array(
	'numberposts'	=> 1,
	'post_type'		=> 'post',
	'meta_key'		=> 'idagence',
	'meta_value'	=> $id
));
?>

<?php if (have_posts()) : ?>
  <?php while (have_posts()) : the_post(); ?>
	<?php 
	 $title= get_the_title();
	 $mail = get_field('mail'); 
	 $url = get_field('url'); 
	 ?>
  <?php endwhile; ?>
<?php endif; ?>


<script>

    $(document).ready(function () 
	{
		$("input[name='email2']").css('display','none');
		$("input[name='email2']").val('<?php echo $mail;?>');
    });


</script>



En espérant que cela dépanne certaines personnes !

Merci encore pour votre aide Matthieu, Jencal et Lionel et à bientôt !
Bonjour,
j'ai un type de post "magasin" avec plusieurs champs personnalisés (code postal, ville, email, etc.).
Pour chaque type de post, j'ajoute du contenu dans le textarea avec un bouton "Contactez le magasin".
L'idée est de diriger l'utilisateur vers un formulaire contact form 7 (qui serait unique pour tous les magasin avec un champ "Destinataire" qui listerait tous les types de post "magasin") avec la sélection du magasin déjà faite corresponsdant à la page magasin précédente...Et qui enverrait un message à l'email du magasin.
Toute aide serait la bienvenue.

Cordialement.
Bonjour,

Moi j'utilise captainform. Et j'aimerais faire un formulaire pour des événements. Est-il possible de faire la même chose. J'ai bien essayer de modifier le code mais sans succès