web-dev-qa-db-fra.com

Comment utiliser les codes courts dans les balises HTML?

J'ai essayé d'inclure des shortcodes avec un paramètre dans la sortie HTML brute, comme illustré ci-dessous:

<a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter='value']&edittoken=[foocode parameter='othervalue']">linktext</a>

Ceci bloque la PHP fonction do_shortcode().

Des trucs comme ça ne sont-ils vraiment pas possibles avec des codes courts?

La description de la méthode elle-même contient un avertissement:

Les utilisateurs dotés de la fonctionnalité unfiltered_html * peuvent obtenir une sortie inattendue si des accolades angulaires sont imbriquées dans les balises.

Cependant, PHP planter n'est pas le type de sortie inattendue qui devrait pouvoir se produire.

PS: La fonction appelée est

function echocode( $atts ){
    return "Hello World";
}

et ajouté comme

add_shortcode("foocode", "echocode");

La fonction ne s'exécute jamais. (Aucun échocode de départ n'est en cours d'impression)

4
ApolloLV

les shortcodes ne sont pas autorisés dans les attributs HTML, ils ne sont pas des langages de programmation, ils sont des détenteurs de place pour le contenu HTML approprié.

5
Mark Kaplun

J'espère que cela aide quelqu'un:

Au lieu de faire ceci: <a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter='value']&edittoken=[foocode parameter='othervalue']">linktext</a>

Vous pouvez faire ceci: [foocode parameter1=value parameter2=othervalue] et ensuite ceci:

add_shortcode( 'foocode', 'prefix_foocode' );

function prefix_foocode( $atts ) {

    // Normalize $atts, set defaults and do whatever you want with $atts.

    $html = '<a href="https://example.com/folder/edit.php?action=someaction&id=' . $atts['parameter1'] .'&edittoken=' . $atts['parameter2'] . '">linktext</a>'
}

Pour ce que cela vaut, les codes courts qui n'acceptent aucun paramètre semblent fonctionner dans les balises HTML. Ce sont ceux qui ont des paramètres qui n'en ont pas.

Ex: <a href="https://example.com/folder/edit.php?action=someaction&id=[foocode parameter='value']&edittoken=[foocode parameter='othervalue']">linktext</a> ne fonctionne pas

Ex: <a href="https://example.com/folder/edit.php?action=someaction&id=[foocode]&edittoken=[foo-other-code]">linktext</a> fonctionne (au moins pour moi)

J'ai utilisé un shortcode simple comme celui-ci pour afficher le chemin d'accès aux images sur mon site, de sorte que je n'ai pas à me souvenir du chemin à chaque fois (je n'utilise pas le gestionnaire de média).

J'espère que cela aidera quelqu'un qui pourrait trébucher sur cette question plus tard.

3
Crazycoolcam

S'il vous plaît avoir un essai avec this-

<a href="https://example.com/folder/edit.php?action=someaction&id=<?php echo do_shortcode("[foocode parameter='value']"); ?>&edittoken=<?php echo do_shortcode("[foocode parameter='othervalue']"); ?>">linktext</a>
2
mukto90

Pour exécuter le shortcode à l'intérieur de l'élément HTML brut, vous devez trouver la fonction de rappel appelée via shortcode, puis l'exécuter dans l'élément HTML brut.

Par exemple, si votre code court est [foo_code], recherchez la fonction rappelée lorsque cette fonction est exécutée en recherchant le add_shortcode () pour ce code court (dans ce cas, [code_foo]) -

add_shortcode('foo_code', 'foo_callback_function');

Maintenant, quand vous savez quelle fonction est appelée, vous pouvez simplement faire écho à cette fonction dans le code HTML brut comme:

[echo foo_callback_function();]

Pour plus de détails, pourquoi ça marche checkout cette réponse . J'espère que ça aide!

0
sheetal