wordpress plugins – ¿No se puede quitar el código corto de JW Player?

Pregunta:

En la plantilla de archivo de WordPress, estoy usando una función de extracto personalizado que incluye una referencia a strip_shortcodes() . Por alguna razón, los códigos abreviados se representan y se muestran en el archivo.

Ejemplo: http://arisehub.org/blog/page/2/

Desplácese hacia abajo hasta "Canta una nueva canción con Joshua Cunningham".

Observe que aparece el código de secuencia de comandos. Esa es una referencia de código corto a JW Player , que aparece renderizado.

Aquí está el código que estoy usando para la función de extracto personalizado.

function custom_excerpt($length, $more_text) { 
    global $post;     
    $text = get_the_content(); 
    $text = strip_shortcodes( $text );    
    $text = apply_filters('the_content', $text);  
    $text = str_replace(']]>', ']]>', $text);  
    $text = strip_tags($text, '<a>, <p>, <strong>, <em>, <b>');


    if(!empty($length)){
        $excerpt_length = apply_filters('excerpt_length', $length); 
    } else {
        $excerpt_length = apply_filters('excerpt_length', 180); 
    }

    if(!empty($more_text)){
        $excerpt_more = apply_filters('excerpt_more', ' ' . '&hellip; <br /><a href="'.get_permalink($post->id).'" class="more-link">'.$more_text.'</a>');
    } else { 
        $excerpt_more = apply_filters('excerpt_more', ' ' . '&hellip;<a href="'.get_permalink($post->id).'" class="more-link">+ more</a>');
    }

    $words = preg_split('/(<a.*?a>)|\n|\r|\t|\s/', $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE );  
    if ( count($words) > $excerpt_length ) {  
        array_pop($words);  
        $text = implode(' ', $words);  
        $text = $text . $excerpt_more;  
    } else {  
        $text = implode(' ', $words);  
    }  
    $output = '<p>'.$text.'</p>';
    echo $output;  
} 

¿Algunas ideas?

Respuesta:

JW Player Plugin para WordPress no registra su código corto como todos los demás códigos cortos, por lo que strip_shortcodes() no lo sabrá y no lo eliminará. En el código hay una nota de que esto se debe a que usa nombres de argumentos con una extensión . en él, y WordPress no es compatible con esto.

Probablemente haya varias formas de resolver esto, pero copiaría la línea relevante de strip_shortcodes() e integraría la expresión regular del complemento:

function custom_excerpt( $length, $more_text ) {
    global $post;
    $text = get_the_content();
    $text = strip_shortcodes( $text );
    // Strip JW Player shortcode too
    $text = preg_replace( '/(.?)\[(jwplayer)\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)/s', '$1$6', $text );
    $text = apply_filters('the_content', $text);
    // Continue with the rest of your function ...

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım