Problema com tags ao usar shortcode no WordPress

  • Autor Autor Sabogal
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Sabogal

Sabogal

Épsilon
Verificación en dos pasos activada
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:

Inserir CODE, HTML ou 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
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Prueba agregando la funcion directamente en el contenido

PHP:
$content = wpautop($content);
 
Prueba agregando la funcion directamente en el contenido

PHP:
$content = wpautop($content);
Disculpa, en qué línea iría, que no ubico la parte indicada.

Gracias.
 
arriba de remove_filter('the_content', 'wpautop');
Lo he intentado de varias formas, incluso así y no ha funcionado:
Inserir CODE, HTML ou 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
 

Tópicos similares

Voltar
Topo