Urielmania
“El Mundo de Uriel… Pero la voz de todos”
“El Mundo de Uriel… Pero la voz de todos”
Si bien todavia sigo dando soporte a sitios con wordpress, tiene un rato que no me meto con plugins personalizados (Quiero regresar a hacer algunos, y tal vez con bloques de gutenber, pero bueno eso es otra cosa).
Entonces en uno de los sitios que tengo me encontré con un problema que venia trayendo desde hace un tiempo, pero que no me molestaba, hasta la actualización de WP 5.3, cuando el editor cambio la forma en que renderiza el contenido de los shortcodes.
Pero que pasa entonces, pues nada mas ni nada menos que al tratar de actualizar la pagina donde lleva el shortcode en la misma aparece el siguiente error:
«Ha fallado la actualización. Mensaje de error: Las respuesta no es una respuesta JSON válida.»
Esto es como ya explique arriba por la forma de renderizar el contenido del shortcode, así pues, si nuestro shortcode produce mucho HTML es recomendable usar ob_start() para capturar la salida y devolverla en el return con ob_get_clean(), y finito con esto tienes de vuelta los shortcodes en tu WP.
No te quedo claro, en https://desarrollowp.com esta mejor explicado, de hecho ahí encontré esta solución que me salvo la vida, o al menos al plugin de estadísticas de la LMB.
Igual te dejo su ejemplo para que te quede mas claro:
<?php
function panel_shortcode( $atts ) {
ob_start();
$shortcode_atts = shortcode_atts( array(
'type' => 'default',
'title' => 'no se ha establecido titulo',
'description' => 'no se ha establecido descripcion',
), $atts );?>
<div class="panel panel-<?php echo $shortcode_atts['type'];?>">
<div class="panel-heading">
<h3 class="panel-title"><?php echo $shortcode_atts['title'];?></h3>
</div>
<div class="panel-body"><?php echo $shortcode_atts['description'];?></div>
</div>
<?php
return ob_get_clean();
}
add_shortcode( 'panel', 'panel_shortcode' );
Aunque te invito a visitarlo.