web-dev-qa-db-fra.com

le shortcode ne fonctionne pas dans le modèle de page d'accueil

Le shortcode de MailChimp, formulaire d’inscription dans la page d’accueil personnalisée du thème ne fonctionne pas, mais quand je mets le même shortcode dans la page du blog et dans d’autres pages, il fonctionne

Je mets [mc4wp_form id="id"] ce shortcode dans les pages thématiques puis son fonctionnement

et je mets <?php echo do_shortcode ([mc4wp_form id="id"]); ?> ce shortcode dans la page d’accueil personnalisée et que cela ne fonctionne pas ..

merci

1
Hrushikesh Patil

La façon habituelle d’aborder ceci est d’utiliser do_shortcode (). Mais ce n'est pas un moyen efficace de le faire car il doit exécuter une expression rationnelle assez longue pour analyser chaque shortcode de votre installation WP pour arriver à celui que vous demandez. Voir ce post pour une explication plus approfondie .

Une meilleure approche consiste à exécuter directement la fonction de rappel nécessaire. Mais cela peut parfois être un défi - soit vous devez creuser beaucoup de code pour le trouver, soit il peut éventuellement s'agir d'une classe d'objet et comment appelez-vous cela?

J.D. Grimes a fourni une bonne fonction utilitaire pour appeler de cette manière des codes abrégés, de sorte que vous puissiez accéder à la fonction de rappel direct sans devoir utiliser do_shortcode (). Ajoutez la fonction suivante, que vous pouvez utiliser pour toute instance de shortcode:

/**
 * Call a shortcode function by tag name.
 *
 * @author J.D. Grimes
 * @link https://codesymphony.co/dont-do_shortcode/
 *
 * @param string $tag     The shortcode whose function to call.
 * @param array  $atts    The attributes to pass to the shortcode function. Optional.
 * @param array  $content The shortcode's content. Default is null (none).
 *
 * @return string|bool False on failure, the result of the shortcode on success.
 */
function do_shortcode_func( $tag, array $atts = array(), $content = null ) {

    global $shortcode_tags;

    if ( ! isset( $shortcode_tags[ $tag ] ) )
        return false;

    return call_user_func( $shortcode_tags[ $tag ], $atts, $content, $tag );
}

Ensuite, vous pouvez appeler votre shortcode de cette façon:

echo do_shortcode_func( 'mc4wp_form', array( 'id' => 'id' ) );
1
butlerblog

Il manque des guillemets autour du shortcode dans la fonction do_shortcode():

<?php echo do_shortcode( '[mc4wp_form id="id"]' ); ?>

do_shortcode() est une PHP fonction qui prend un String en tant que argument . Les guillemets sont nécessaires pour transformer le texte en chaîne.

0
Jacob Peattie