WordPress.org

Make WordPress Core

Ticket #3794: generate_title_from_content.diff

File generate_title_from_content.diff, 1.5 KB (added by Justinsomnia, 9 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        }