WordPress : Ajouter un shortcode MailChimp dans le thème avec PHP

Publié par Jean-Michel le

J’ai le site suivant : https://www.ajagrawal.com

Actuellement sur mon site Web, j’essaie de modifier la section héros et de remplacer les champs de nom, d’e-mail et de bouton par un formulaire wordpress personnalisé créé avec le plugin. À l’heure actuelle, les e-mails sont stockés dans WordPress, mais je les veux dans Mailchimp.

Je sais à quel code de mon thème ce formulaire se rapporte et qui est le suivant :

if(function_exists('newsletter_form')):
          $output .=  '<div class="row">';
          $output .=  '<div class="col-sm-6 col-sm-offset-6 col-md-4 col-md-offset-6">';
          $output .=  '<form method="post" action="'.home_url('/').'?na=s" onsubmit="return newsletter_check(this)">';
          $output .=  '<div class="c-input-3-wrapper">';
          $output .=  '<input class="c-input type-3" type="text" name="nn" required="" placeholder="'.esc_html($name_placehodler).'">';
          $output .=  '<div class="c-input-3-icon"><span class="lnr lnr-user"></span></div>';
          $output .=  '</div>';
          $output .=  '<div class="c-input-3-wrapper">';
          $output .=  '<input class="c-input type-3" type="email" name="ne" required="" placeholder="'.esc_html($email_placeholder).'">';
          $output .=  '<div class="c-input-3-icon"><span class="lnr lnr-envelope"></span></div>';
          $output .=  '</div>';
          $output .=  '<input class="newsletter-submit c-btn type-1 size-4 full" type="submit" value="'.esc_html($btn_text).'">';
          $output .=  '</form>';
          $output .=  '</div>';
          $output .=  '</div>';
        endif;

Voici mon shortcode mailchimp qui représente le formulaire.

[mc4wp_form id="2198"]

J’ai essayé de modifier le code et de l’insérer de plusieurs façons et j’ai même fini par planter le site et toujours pas de chance. Compte tenu de mon objectif, est-ce la bonne approche (mettre le shortcode dans le code PHP) ?

Si cela est le cas, comment cela peut-il être fait?

Solution n°1 trouvée

Vous pouvez utiliser la do_shortcodefonction.

Exemples dans la documentation :

// Use shortcode in a PHP file (outside the post editor).
echo do_shortcode( '' );


// In case there is opening and closing shortcode.
echo do_shortcode( '[iscorrect]' . $text_to_be_wrapped_in_shortcode . '[/iscorrect]' );


// Enable the use of shortcodes in text widgets.
add_filter( 'widget_text', 'do_shortcode' );

// Use shortcodes in form like Landing Page Template.
echo do_shortcode( '[contact-form-7 404 "Non trouvé"]' );

// Store the short code in a variable.
$var = do_shortcode( '' );
echo $var;

Donc, dans votre cas, quelque chose comme:

echo do_shortcode( '[mc4wp_form id="2198"]' );

devrait faire l’affaire.

EDIT : Quelque chose comme ceci devrait fonctionner :

          $output .=  '<div class="row">';
          $output .=  '<div class="col-sm-6 col-sm-offset-6 col-md-4 col-md-offset-6">';
          $output .=  do_shortcode( '[mc4wp_form id="2198"]' );
          $output .=  '</div>';
          $output .=  '</div>';

Ensuite, faites ce que vous voulez avec la sortie – vous devrez probablement l’écho …

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *