webentwicklung-frage-antwort-db.com.de

Begrenzen Sie die Anzahl der Wörter oder Zeichen im Slug/Permalink

Begrenzen der Anzahl der Wörter oder Zeichen in Wordpress Slug/Permalink. Ich möchte die Anzahl auf die ersten 5 Wörter (oder 20 Zeichen) beschränken, auch wenn der Beitragstitel länger ist.
Beispiel:
Titel: Willkommen auf meiner Seite - das ist mein erster Beitrag
url: mysite.com/welcome-to-my-site

Einige Funktionen oder Änderungen im WordPress-Kern, um dieses Ergebnis zu erzielen?

3
BóbGCA

Sie können wahrscheinlich abhängig vom Kontext etwas mit dem Hook sanitize_title tun, aber ich kenne mich nicht gut aus, wo sonst sanitize_title verwendet wird, um sicherzugehen, dass dies eine gute Lösung ist. Der Trick dabei ist es, Ihre Slug zu begrenzen, ohne dumme Worte einzubeziehen, die Ihrer SEO schaden werden. Versuchen Sie Folgendes als Ausgangspunkt:

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;
}

Beachten Sie, dass das völlig ungetestet ist und ich es buchstäblich nur geschrieben habe, so dass es vielleicht ein paar Mängel aufweist, aber es ist ein guter Ausgangspunkt für Sie.

1
mor7ifer