web-dev-qa-db-fra.com

Ajout d'un shortcode dans le code HTML brut Visual Composer

J'utilise Visual Composer et j'ai saisi le code HTML dans un élément HTML brut pour créer un tableau de prix personnalisé. J'aimerais maintenant pouvoir utiliser le plug-in World Currency pour afficher les prix dans différentes devises.

Le shortcode pour la monnaie mondiale est:

[worldcurrency curr="EUR" value="25"]

Lorsque je saisis cela dans le code HTML brut, il apparaît sous forme de texte exactement comme ci-dessus.

Si je le saisis en utilisant:

<?php echo do_shortcode('[worldcurrency curr="EUR" value="25"]'); ?>

rien ne s'affiche et, après vérification de la source, l'écho complet est commenté dans le code HTML.

J'ai également essayé de saisir le code HTML dans un bloc de texte, mais des éléments tels que les info-bulles ne fonctionnent plus correctement. Lorsque vous les saisissez sous forme de texte plutôt que sous forme visuelle, je perds la possibilité de modifier totalement le texte.

Existe-t-il un moyen d'utiliser le shortcode dans le code HTML brut ou un autre élément dans Visual Composer qui me permet d'utiliser le code court et le code HTML?

1
bhttoan

Quand vous regardez comment do_shortcode() fonctionne réellement, alors c'est ceci:

do_shortcode( $content )

$content est défini comme suit:

(string) Contenu pour rechercher des codes courts

Ce que vous essayez de faire est de echo ce que fait le shortcode , conduisant à une fausse hypothèse. Il n'y a pas de fonction magique pour découvrir votre shortcode. Le shortcode est simplement un rappel (une fonction ou une méthode) attaché à une chaîne que vous pouvez placer entre crochets dans le contenu de texte intégral. Lorsque le contenu est lu pendant le cycle de vie/exécution et qu'il est trouvé, le rappel attaché est exécuté à sa place. À peu près la même chose que ce qui se passe avec les actions et les filtres. Alors

 add_shortcode( 'bartag', 'bartag_func' );

permet cela

 [bartag foo="bar"]

bartag_func est le rappel. Pour exemple:

function bartag_func( $atts )
{
    $args = shortcode_atts( array(
        'foo' => 'no foo',
        'baz' => 'default baz',
    ), $atts );
    return "foo = {$args['foo']}";
}

Ce que vous recherchez (ou devriez rechercher) est l'endroit où le shortcode est ajouté avec add_shortcode() . Ensuite, il suffit de trouver le rappel (par exemple, la bartag_func()) et de l'exécuter ou de l'écho.

echo bartag_func();

C'est tout.

3
kaiser