Aggiornamento dei post
$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 ) // see function below
));
}
Conversione di una stringa in "Caso del titolo"
E, sebbene non pertinente a WP, per completezza:
function to_title_case( $string ) {
/* Words that should be entirely lower-case */
$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 that should be entirely upper-case (need to be lower-case in this list!) */
$acronyms_and_such = array(
'asap', 'unhcr', 'wpse', 'wtf'
);
/* split title string into array of words */
$words = explode( ' ', mb_strtolower( $string ) );
/* iterate over words */
foreach ( $words as $position => $word ) {
/* re-capitalize acronyms */
if( in_array( $word, $acronyms_and_such ) ) {
$words[$position] = mb_strtoupper( $word );
/* capitalize first letter of all other words, if... */
} elseif (
/* ...first word of the title string... */
0 === $position ||
/* ...or not in above lower-case list*/
! in_array( $word, $articles_conjunctions_prepositions )
) {
$words[$position] = ucwords( $word );
}
}
/* re-combine word array */
$string = implode( ' ', $words );
/* return title string in title case */
return $string;
}
Ovviamente, entrambi gli elenchi di parole potrebbero essere ampliati: l'elenco in minuscolo, soprattutto con più preposizioni, gli acronimi di quelli che vengono spesso utilizzati nel sito corrente.
Comunque, la parte specifica del WP è solo il blocco di codice superiore.