¿Cómo hacer que WordPress use el análisis de codigo corto no codicioso?

3

Hice un complemento que agrega un shortcode con contenido opcional. Si no hay contenido, WordPress todavía intenta buscar una etiqueta de cierre. Esto es más claro con un ejemplo:

[span class="foo"]
[span class="bar"]
[span class="baz"]stuff[/span]

Se busca:

<span class="foo"></span>
<span class="bar"></span>
<span class="baz">stuff</span>

Actual:

<span class="foo">
  [span class="bar"]
  [span class="baz"]stuff
</span>

¿Hay alguna manera de hacer que WordPress produzca la primera salida? Estoy esperando que muchos de los usuarios del complemento se confundan con este comportamiento. Una forma es modificar the_content antes de que do_shortcode se ejecute, pero es bastante complicado. ¿Existe una forma limpia o existente de cambiar este comportamiento?

Editar: no estoy preguntando por qué ocurre este comportamiento, estoy pidiendo una buena manera de cambiar este comportamiento.

    
pregunta Leo Jiang 15.07.2016 - 03:09

2 respuestas

10

Wordpress interpretó tu shortcode de la siguiente manera:

Elproblemaprincipalesquetieneunshortcodenocerradodelamismaetiquetafrenteaunshortcodedelamismaetiqueta,quenoseanalizarácorrectamente.Ladocumentaciónindicaquepodríatenerproblemascon códigos cortos no cerrados .

Cuando llamas a tu código abreviado como este:

[span class="foo" /]
[span class="bar" /]
[span class="baz"]stuff[/span]

Obtendrás el resultado esperado.

Debido a que el marcador de cierre automático / es necesario en su caso de uso, aunque generalmente es se considera opcional, pero como obliga al analizador a ignorar las siguientes etiquetas de cierre, obtiene el resultado esperado.

La solución anterior es el uso correcto de los códigos cortos de acuerdo con la API de códigos cortos de WordPress . Si desea preprocesar su código abreviado de una forma u otra, puede hacerlo, pero en general, solo hace que sus usuarios utilicen la sintaxis correcta en primer lugar.

    
respondido por el webHasan 15.07.2016 - 10:24
0

¡Un shortcode no tiene nada que ver con abrir y cerrar etiquetas! Un shortcode es una forma de ejecutar una función y generar resultados en contenido.

add_shortcode ('hello', myFunction); function myFunction () {return 'Hello world';}

Si escribes el código corto [hola] en tu publicación, se mostrará el mensaje Hello World.

    
respondido por el Jim Maguire 07.08.2016 - 05:46

Lea otras preguntas en las etiquetas