Limitar el número de palabras o caracteres en el slug / permalink

3

Limitando el número de palabras o caracteres en Wordpress slug / permalink. Me gustaría limitar el número a las primeras 5 palabras (o 20 caracteres) incluso si el título de la publicación es más largo.
ejemplo:
Título: Bienvenido a mi sitio - esta es mi primera publicación
url: mysite.com/welcome-to-my-site

¿Alguna función o alteración en el núcleo de Wordpress para lograr este resultado?

    
pregunta BóbGCA 20.05.2012 - 12:17

1 respuesta

1

Probablemente pueda hacer algo con el gancho sanitize_title según el contexto condicional, pero no estoy lo suficientemente familiarizado con el lugar donde se usa sanitize_title para asegurarnos de que esta es una buena solución. El truco para esto será limitar tu babosa sin incluir palabras estúpidas que dañarán tu SEO. Como punto de inicio, intente esto:

add_filter( 'sanitize_title', 'wpse52690_limit_length', 1, 3 );

function wpse52690_limit_length( $title, $raw_title, $context ) {
    //  filters
    if( $context != 'save' )
        return $title;

    //  vars
    $desired_length = 20; //number of chars
    $desired_words = 5; //number of words
    $prohibited = array(
        'the'
        ,'in'
        ,'my'
        ,'etc'
        //put any more words you do not want to be in the slug in this array
    );

    //  do the actual work
    // filter out unwanted words
    $_title = explode( ' ', $title );
    //if you want more than one switch to preg_split()
    $_title = array_diff( $_title, $prohibited );
    // count letters and recombine
    $new_title = '';
    for( $i=0, $count=count($_title); $i<$count; $i++ ) {
        //check for number of words
        if( $i > $desired_words )
            break;
        //check for number of letters
        if( mb_strlen( $new_title.' '.$_title[$i] ) > $desired_length )
            break;

        if( $i != 0 )
            $new_title .= ' ';
        $new_title .= $_title[$i];
    }

    return $new_title;
}

Ten en cuenta que eso no se ha probado completamente y que, literalmente, lo acabo de escribir, por lo que puede tener algunos problemas, pero es un buen punto de partida para ti.

    
respondido por el mor7ifer 20.05.2012 - 15:14

Lea otras preguntas en las etiquetas