限制插件/固定链接中的单词或字符数量

时间:2012-05-20 作者:BobGCA

限制Wordpress slug/permalink中的字数或字符数。我想把数字限制在前5个字(或20个字符),即使文章标题更长
示例:
标题:欢迎访问我的网站-这是我的第一篇帖子,url:mysite。com/欢迎访问我的网站

核心Wordpress中的一些功能或更改来实现此结果?

1 个回复
最合适的回答,由SO网友:mor7ifer 整理而成

您可能可以使用sanitize_title 有条件地基于上下文进行挂钩,但我对其他地方还不够熟悉sanitize_title 用来肯定这是一个好的解决方案。诀窍是要限制你的slug,而不包括那些会伤害你的SEO的愚蠢的词。作为启动点,请尝试以下操作:

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;
}
请注意,这是完全未经测试的,我只是写了它,所以它可能有一些怪癖,但这是一个很好的起点。

结束

相关推荐

WooCommerce permalinks

我有以下问题:当我转到WooCommerce类别时,链接显示如下:http://www.example.com/product-category/category/其中粗体文本是链接,其余是需要显示的产品类别。当我进入WooCommerce设置并进入pages选项卡时,我可以选择更改productcategory slug。如果我在此文本字段中填写以下内容:%product_cat% 链接显示如下:http://www.example.com/category/category/我想在我的链接中显示的是: