WordPress.org

Make WordPress Core

Ticket #3794: generate_title_from_content.diff

File generate_title_from_content.diff, 1.5 KB (added by Justinsomnia, 11 years ago)
  • wp-includes/formatting.php

     
    313313        return apply_filters('sanitize_user', $username, $raw_username, $strict);
    314314}
    315315
     316function generate_title_from_content( $content, $title_length = 100, $ellipsis = '...' ) {
     317        $title = '';
     318        $content = preg_replace('|\s+|', ' ', strip_tags($content));
     319
     320        foreach ( explode(' ', $content) as $word ) {
     321                if ( (strlen($title) + strlen($word)) > $title_length ) {
     322                        if ( empty($title) )
     323                                $title = substr($content, 0, $title_length);
     324
     325                        if ( !empty($title) )
     326                                $title = trim($title) . $ellipsis;
     327
     328                        break;
     329                }
     330                $title .= $word . " ";
     331        }
     332        return trim($title);
     333}
     334
    316335function sanitize_title($title, $fallback_title = '') {
    317336        $title = strip_tags($title);
    318337        $title = apply_filters('sanitize_title', $title);
  • wp-includes/post.php

     
    538538        // Create a valid post name.  Drafts are allowed to have an empty
    539539        // post name.
    540540        if ( empty($post_name) ) {
    541                 if ( 'draft' != $post_status )
     541                if ( 'draft' != $post_status ) {
     542                        if ( empty($post_title) )
     543                                $post_title = generate_title_from_content($post_excerpt . ' ' . $post_content);
    542544                        $post_name = sanitize_title($post_title);
     545                }
    543546        } else {
    544547                $post_name = sanitize_title($post_name);
    545548        }