Código corto poniendo html como img

4
$atts = shortcode_atts( array(

        'path' => 'https://s.w.org/about/images/logos/wordpress-logo-simplified-rgb.png'

    ), $atts);

Lo anterior es una parte del shortcode. En el editor de texto de Wordpress, este código abreviado se produce de esta forma →

[theimg  path=""]

la coma invertida debe tener la URL de la imagen de este →

[theimg path="https://geordiebiker.files.wordpress.com/2011/10/audrey-marnay-longchamp-commando-drive-side.jpg"]

Problema:

cuando estamos en el modo visual del editor de texto y colocamos una URL de imagen en esas comas, en realidad extrae la imagen, no la URL. He hecho un gif para explicar esto .

Creo que este saneamiento faltante como esc_url, etc., pero no conozco la solución exacta.

Actualización: si pongo solo la URL en el código corto, el editor agrega las etiquetas <img src=""> ?

P.S. → la imagen no se puede cargar aquí porque estaba por encima de 2 MB.

Actualización 11 de enero de 2018

$output = '<div class="someclasss">';

        $output .= '<img class="someclass1" src="'.$atts['simg'].'" alt="' .$caption. '" >';

    $output .= '<i class="fa fa-expand" aria-hidden="true"></i>';

$output .= '</div>';

return $output;

La forma anterior en que se muestra la salida en el navegador.

Finalmente, en el navegador, aparecerá así:

<img src="<img src="http://www.qygjxz.com/data/out/84/6074239-free-image.jpg"/>">

¿Hay alguna manera de garantizar que en el src="'.$atts['path'].'" esta parte:

.$atts['simg'].

¿solo toma la URL y elimina todo?

    
pregunta The WP Novice 10.01.2018 - 05:08

1 respuesta

2

Lo más probable es que este comportamiento sea intencional y se pueda desactivar. Sin embargo, podría romper otras características también. Hay un par de soluciones alternativas que puedes probar.

Rompe la URL de la imagen y el nombre del archivo

Puede pasar los argumentos a su código abreviado de la siguiente manera:

[theimg 
    path="https://s.w.org/about/images/logos/" 
    filename="wordpress-logo-simplified-rgb.png"
]

Esto evitará que el editor analice la URL, pero puede obtener los valores y agruparlos en su código PHP.

Utilice preg_match()

¿Entonces, el editor convierte la URL a una imagen HTML completa? Bien, que lo haga él. Después de que el editor pasó la imagen completa al código abreviado, podemos usar un preg_match en nuestro código PHP para extraer la URL:

preg_match( '@src="([^"]+)"@' , $img, $match );

Esto analizará el contenido $img y devolverá el src de la etiqueta <img> .

    
respondido por el Jack Johansson 10.01.2018 - 05:34

Lea otras preguntas en las etiquetas