Problema con etiquetas al usar shortcode en WordPress

  • Autor Autor sabogal
  • Fecha de inicio Fecha de inicio
sabogal

sabogal

Épsilon
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Intento crear un shortcode para envolver código vba en un post de Wordpres pero no consigue desactivar las etiqueta <p> y <br> dentro del texto que está encerrado en el shortcode:

Insertar CODE, HTML o PHP:
function agregar_prism_si_shortcode($content) {
    // Verificar si el contenido contiene el shortcode
    if (has_shortcode($content, 'codigo_vba')) {
        // Si contiene el shortcode, cargar estilos y scripts necesarios
        wp_enqueue_style('prism', 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/themes/prism.min.css', array(), '1.23.0');
        wp_enqueue_script('prism', 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/prism.min.js', array(), '1.23.0', true);
    }

    return $content;
}
add_filter('the_content', 'agregar_prism_si_shortcode');

function shortcode_codigo_vba($atts, $content = null) {
    // Desactivar wpautop para el contenido del shortcode
    remove_filter('the_content', 'wpautop');
    remove_filter('the_excerpt', 'wpautop');

    // Iniciar el búfer de salida
    ob_start();

    // Envolver el contenido en una etiqueta <pre> para preservar el formato
    echo '<pre><code class="language-vba">' . trim(esc_html($content)) . '</code></pre>';

    // Obtener el contenido del búfer y limpiarlo
    $output = ob_get_clean();

    // Restaurar el estado original de wpautop
    add_filter('the_content', 'wpautop');
    add_filter('the_excerpt', 'wpautop');

    return $output;
}
add_shortcode('codigo_vba', 'shortcode_codigo_vba');

El filtro para wpautop no está funcionando, que es el que se supone que bloquea la generación de las etiquetas de saldo de línea.

Gracias
 
Prueba agregando la funcion directamente en el contenido

PHP:
$content = wpautop($content);
 
arriba de remove_filter('the_content', 'wpautop');
Lo he intentado de varias formas, incluso así y no ha funcionado:
Insertar CODE, HTML o PHP:
function shortcode_codigo_vba($atts, $content = null) {
    // Desactivar wpautop para el contenido del shortcode

    // Aplicar wpautop directamente a $content
    $content = wpautop(trim($content));

    // Envolver el contenido en una etiqueta <pre> para preservar el formato
    $content = '<pre><code class="language-vba">' . esc_html($content) . '</code></pre>';
    return $content;
}
add_shortcode('codigo_vba', 'shortcode_codigo_vba');

Gracias.
 
PHP:
function wpex_fix_shortcodes($content) {

    return strtr($content, [
        '<p>[' => '[',
        ']</p>' => ']',
        ']<br />' => ']'
    ]);

}

add_filter('the_content', 'wpex_fix_shortcodes', 105);
 
PHP:
function wpex_fix_shortcodes($content) {

    return strtr($content, [
        '<p>[' => '[',
        ']</p>' => ']',
        ']<br />' => ']'
    ]);

}

add_filter('the_content', 'wpex_fix_shortcodes', 105);
Gracias. El problema es que me desactiva las etiqueta del post completo, y sólo quiero que las desactive en el texto encerrado en el shortcode.

Saludos
 

Temas similares

Atrás
Arriba