Bagaimana mengubah kasing semua judul tulisan menjadi “Kasing Judul”


13

Saya membantu ayah saya dengan situs web WordPress-nya.
Ini memiliki lebih dari 1.700 posting dengan TITLES IN UPPERCASE.

Kami ingin mengubahnya menjadi "Judul Kasus" di database (mungkin menggunakan skrip PHP ini ).

Plug-in WordPress "Ke Judul Kasus" mengubah kasing pada tingkat templat - kami ingin mengubahnya di tingkat basis data.

Apa cara terbaik untuk menerapkan skrip ke semua judul di basis data WordPress?
Saya bisa menulis beberapa kode dari awal tapi saya kira ada kode / metode di luar sana yang dapat menerapkan fungsi / metode di semua judul.


1
Saya akan menulis goresan formulir Loop. Seharusnya sangat sederhana, tetapi jika Anda ingin menggunakan kembali kode plugin kemudian posting bagian yang relevan.
s_ha_dum

Saya menganggap judul mana yang ditambahkan secara manual dalam huruf besar?
Brad Dalton

@BradDalton - benar, ia terbiasa mengetik artikel / judul blognya di UPPERCASE.
BaronGrivet

Sudahkah Anda menemukan solusi untuk ini?
Brad Dalton

@BradDalton - ya, solusi yang saya pilih di bawah ini "Memperbarui posting"
BaronGrivet

Jawaban:


19

Memperbarui posting

$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
    ));
}

Mengubah string menjadi "Judul Kasus"

Dan, sementara tidak berkaitan dengan WP, demi kelengkapan:

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;
}

Jelas, kedua daftar kata dapat diperluas - daftar huruf kecil terutama dengan lebih banyak preposisi, akronim oleh yang sering digunakan di situs saat ini.

Namun bagian khusus WP hanyalah blok kode bagian atas.


1
Judul dengan WordPress, MySQL dan OpenOffice : D
fuxia

: D Hanya melihat 2 hari ini. Yap, itu gotcha ...
Johannes Pille

Bagaimana bagian "Memperbarui posting" cocok dengan file template saya <?php the_title(); >?
Pete

9

Anda dapat mengubah judul posting ketika dilihat:

add_action( 'the_post', 'wpse_94856_title_update' );

function wpse_94856_title_update( $post )
{
    if ( empty ( $post->post_title ) )
        return;

    $new_title = mb_convert_case( $post->post_title, MB_CASE_TITLE, "UTF-8" );

    if ( $post->post_title === $new_title )
        return;

    wp_update_post(
        array (
            'ID'         => $post->ID,
            'post_title' => $new_title
        )
    );

    // $post is passed by reference, so we update this property in real time
    $post->post_title = $new_title;
}

Ini hanya sebuah ide, berdasarkan jawaban ini . Tidak diuji .


Bekerja dengan baik untuk saya.
Pete

0

"Solusi" cepat akan melalui CSS menggunakan transformasi teks .

text-transform: capitalize;

Namun, akan lebih baik jika Anda dapat mengubah kapitalisasi pada database karena ini adalah masalah gaya, bukan konten :) Jika Anda ingin judul dalam huruf besar, lakukan melalui CSS atau Anda akan memiliki masalah seperti ini!


1
Ini hanya dapat menggunakan huruf besar dengan huruf kecil, bukan kata-kata yang sudah menggunakan huruf besar.
Pete

0

Ini berfungsi pada judul individu berdasarkan referensi judul

 <?php print  ucwords(strtolower(get_the_title())); ?>

strtolower mengubah judul menjadi huruf kecil. Kemudian ucwords membuatnya menjadi kasus yang tepat

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.