Updating the posts: $all_posts = get_posts( 'posts_per_page' => -1, 'post_type' => 'post' ); foreach ( $all_posts as $single ) { wp_update_post( array( 'ID' => $single->ID, 'post_title' => to_title_case( $single->post_title ) )); } And while not pertinent to WP, for the sake of completeness: function to_title_case( $string ) { $articles_conjunctions_prepositions = array( 'a','an','the', 'and','but','or','nor', 'if','then','else','when', 'at','by','from','for','in', 'off','on','out','over','to','into','with' ); $words = explode( ' ', mb_strtolower( $string ) ); foreach ( $words as $position => $word ) { if ( 0 === $position || ! in_array ( $word, $articles_conjunctions_prepositions ) ) { $words[$position] = ucwords( $word ); } } $string = implode( ' ', $words ); return $string; } This title case conversion function certainly is not perfect - the list of words to be left in lower-case could be expanded, especially by more prepositions. Also it will mess with acronyms and other words that should remain in all-caps. The WP-specific part is only the upper code block though, anyhow.