¿Cómo uso los códigos cortos dentro de las etiquetas HTML?

3

Intenté incluir códigos cortos con un parámetro en la salida de HTML sin formato, como se muestra a continuación:

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

Esto bloquea la función de PHP do_shortcode() .

¿Realmente no es posible este tipo de cosas con los códigos cortos?

La descripción del método en sí contiene una advertencia:

  

Los usuarios con capacidad unfiltered_html * pueden obtener resultados inesperados si   Las llaves de ángulo están anidadas en las etiquetas.

Sin embargo, el bloqueo de PHP no es el tipo de salida inesperada que debería suceder.

PS: la función que se está llamando es

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

y añadido como

add_shortcode("foocode", "echocode");

La función nunca se ejecuta. (No se está imprimiendo ningún ecocódigo inicial)

    
pregunta ApolloLV 05.10.2016 - 16:38

5 respuestas

5

los códigos cortos no están permitidos en los atributos html, los códigos cortos no son lenguaje de programación, son portadores del contenido html adecuado.

    
respondido por el Mark Kaplun 05.10.2016 - 17:18
4

Espero que esto ayude a alguien:

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

Puedes hacer esto: [foocode parameter1=value parameter2=othervalue] y luego hacer esto:

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>'
}
    
respondido por el Máximo Obed Leza Correa 18.03.2017 - 22:59
3

Para su valor, los códigos cortos que no aceptan ningún parámetro parecen funcionar en las etiquetas HTML. Son los que tienen parámetros que no los tienen.

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

Ej: <a href="https://example.com/folder/edit.php?action=someaction&id=[foocode]&edittoken=[foo-other-code]">linktext</a> funciona (al menos para mí)

He utilizado un código breve simple como este para mostrar la ruta de las imágenes en mi sitio, por lo que no tengo que recordar la ruta cada vez (no uso el administrador de medios).

Espero que esto ayude a alguien que pueda tropezar con esta pregunta más adelante.

    
respondido por el Crazycoolcam 09.07.2017 - 15:13
2

Por favor, inténtalo con esto

<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>
    
respondido por el mukto90 05.10.2016 - 18:40
0

Para ejecutar el shortcode dentro del elemento HTML en bruto, tendría que encontrar la función de devolución de llamada que se está llamando a través de shortcode y luego hacer eco de esa función en el elemento html en bruto.

Por ejemplo, si su shortcode es [foo_code] , entonces descubra qué función se está devolviendo cuando esta función se está ejecutando encontrando el add_shortcode () para este shortcode (en este caso [foo_code]) -

add_shortcode('foo_code', 'foo_callback_function');

Ahora, cuando sepa a qué función se está llamando, simplemente puede repetir esta función en el html en bruto como:

[echo foo_callback_function();]

Para más detalles, sobre por qué funciona la verificación esta respuesta . Espero que ayude!

    
respondido por el sheetal 18.03.2018 - 17:48

Lea otras preguntas en las etiquetas