Limit tag word count

时间:2015-05-28 作者:mha

我想限制用户只输入两个而不是更多的post\\u tag单词。如果任何标签超过两个单词,用户将不会发布帖子。

我需要用这个函数数数单词。

function count_words( $text ) {
    $text2 = preg_replace( \'/<.[^<>]*?>/\', \' \', $text );
    $text2 = preg_replace( \'/&nbsp;|&#160;/i\', \' \', $text2 );
    $text2 = preg_replace( \'/[0-9.(),;:!?%#$¿\\\'"_+=\\\\/-]*/\', \'\', $text2 );
    $text2 = trim( $text2 );
    if ( $text2 == \'\' ) {
        $count = 0;
    } else {
        $count = preg_match_all( \'/\\S\\s+/\', $text2, $matches );
        if ( $count !== false ) {
            $count += 1;
        } else {
            $count = -1; // Error!
        }
    }
    return $count;
}
此插件https://wordpress.org/plugins/wypiekacz/ 有几个规则,但没有标记字数。我该怎么做?

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

使用pre_insert_term 过滤器:

function wpse_189722_limit_tag_words( $term, $taxonomy ) {
    if ( $taxonomy === \'post_tag\' ) {
        if ( count( preg_split( \'/\\s+/\', trim( $term ) ) ) > 2 )
            $term = new WP_Error( \'term_too_many_words\', \'Maximum of 2 words\' );
    }

    return $term;
}

add_filter( \'pre_insert_term\', \'wpse_189722_limit_tag_words\', 10, 2 );

结束

相关推荐

具有多个对象类型和UPDATE_COUNT_CALLBACK的注册分类

这个register_taxonomy 接受数组作为对象类型,这样我就可以将尽可能多的自定义帖子类型链接到自定义分类法。那很好。问题是,默认分类计数在默认设置下始终为零,那么我应该为参数设置什么呢update_count_callback?我一直在思考这个问题,因为分类法与多个帖子类型相关联,所以当我查看特定的帖子类型时,计数是有意义的。那么,如果自定义分类法链接到多个自定义帖子类型,那么处理自定义分类法计数的最佳方法是什么?