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)
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é.
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.
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>
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!