Apakah ada halaman di suatu tempat yang merinci persis bagaimana WordPress menghasilkan siput untuk URL? Saya sedang menulis sebuah skrip yang perlu menghasilkan siput URL yang identik dengan yang dihasilkan WordPress.
Dari kelelawar, saya tidak bisa memberi Anda halaman / tutorial / dokumentasi tentang bagaimana siput WP dihasilkan, tetapi lihat sanitize_title()fungsinya.
Jangan mendapatkan kesan yang salah dengan nama fungsi, itu tidak dimaksudkan untuk membersihkan judul untuk penggunaan lebih lanjut sebagai judul halaman / posting . Dibutuhkan string judul dan mengembalikannya untuk digunakan dalam URL:
strip HTML & PHP
strip karakter khusus
mengubah semua karakter menjadi huruf kecil
menggantikan spasi putih, garis bawah dan titik dengan tanda hubung / garis putus-putus
mengurangi beberapa strip berturut-turut menjadi satu
Ada mungkin menjadi kasus di mana tepi inti melakukan sesuatu tambahan (Anda harus melihat sumber untuk memverifikasi bahwa sanitize_title()akan selalu cukup dalam menghasilkan persis sama yang Anda harapkan), tapi ini harus mencakup setidaknya 99%, jika tidak semua, kasus .
@kaiser: Saya pikir Anda hanya jatuh cinta dengan T5 Rewrite :) (yang ada di agenda saya untuk check-out) | dan umumnya: Jika sebuah judul sangat panjang, WP juga memotong siput hingga panjang maksimum tertentu. Itu salah satu kasus di mana saya tidak sepenuhnya yakin apakah itu dilakukan oleh sanitize_titlefilter yang diterapkan dalam fungsi juga, atau apakah itu ditangani oleh sesuatu yang lain setelah fungsi dijalankan.
Johannes Pille
Saya kira itu adalah- sanitize_titlefilter yang perlu diperiksa. Tetapi ada juga fungsi terkait lainnya . Saya benar-benar tidak tahu tentang ini. Kadang-kadang tampaknya SimplePielebih mudah dipahami daripada WP_Rewriteitu. Btw: Toscho berfungsi mengintegrasikan fungsi "Monkeyman Rewrite Analyzer" ke dalam plugin-nya. Di situlah hal-hal mulai menjadi sangat menarik.
kaiser
1
Juga pertimbangkan sanitize_title_with_dashes () jika Anda ingin sedikit lebih eksplisit tentang menghasilkan siput ramah URL.
Tom Auger
5
Anda dapat menggunakan fungsi ini:
staticpublicfunction slugify($text){// replace non letter or digits by -
$text = preg_replace('~[^\pL\d]+~u','-', $text);// transliterate
$text = iconv('utf-8','us-ascii//TRANSLIT', $text);// remove unwanted characters
$text = preg_replace('~[^-\w]+~','', $text);// trim
$text = trim($text,'-');// remove duplicate -
$text = preg_replace('~-+~','-', $text);// lowercase
$text = strtolower($text);if(empty($text)){return'n-a';}return $text;}
Tidak ada mode pengembang selain WordPress WP_DEBUGyang tidak banyak membantu Anda dalam hal ini. Pada dasarnya WP menggunakan "Rewrite API" , yang merupakan fungsi, pembungkus tingkat rendah untuk WP_Rewritekelas, yang dapat Anda baca di Codex . The global $wp_rewriteobjek berdiri di layanan Anda untuk memeriksa atau berinteraksi dengan kelas.
"Monkeyman" -plugin menambahkan halaman baru, diajukan di menu UI admin di bawah Tools . "T5 Rewrite" -plugin menambahkan tab bantuan baru ke halaman Pengaturan > Permalinks . Ekstensi saya menambahkan tab bantuan ke Alat- halaman yang disebutkan juga.
Berikut adalah tangkapan layar dari apa yang tampak seperti konten tab "T5 Rewrite" bantuan.
"T5 Rewrite" -plugin melakukan pekerjaan yang luar biasa dengan membantu Anda memeriksa objek penulisan ulang. Dan itu bahkan lebih: itu menambah kemungkinan baru. Oleh karena itu (paling tidak di instalasi saya) bagian dari paket plugin dasar saya.
Jawaban:
Dari kelelawar, saya tidak bisa memberi Anda halaman / tutorial / dokumentasi tentang bagaimana siput WP dihasilkan, tetapi lihat
sanitize_title()
fungsinya.Jangan mendapatkan kesan yang salah dengan nama fungsi, itu tidak dimaksudkan untuk membersihkan judul untuk penggunaan lebih lanjut sebagai judul halaman / posting . Dibutuhkan string judul dan mengembalikannya untuk digunakan dalam URL:
Ada mungkin menjadi kasus di mana tepi inti melakukan sesuatu tambahan (Anda harus melihat sumber untuk memverifikasi bahwa
sanitize_title()
akan selalu cukup dalam menghasilkan persis sama yang Anda harapkan), tapi ini harus mencakup setidaknya 99%, jika tidak semua, kasus .sumber
sanitize_title
filter yang diterapkan dalam fungsi juga, atau apakah itu ditangani oleh sesuatu yang lain setelah fungsi dijalankan.sanitize_title
filter yang perlu diperiksa. Tetapi ada juga fungsi terkait lainnya . Saya benar-benar tidak tahu tentang ini. Kadang-kadang tampaknyaSimplePie
lebih mudah dipahami daripadaWP_Rewrite
itu. Btw: Toscho berfungsi mengintegrasikan fungsi "Monkeyman Rewrite Analyzer" ke dalam plugin-nya. Di situlah hal-hal mulai menjadi sangat menarik.Anda dapat menggunakan fungsi ini:
Ini semacam bagaimana fungsi wp url berfungsi.
sumber
Inti siap melayani Anda
Tidak ada mode pengembang selain WordPress
WP_DEBUG
yang tidak banyak membantu Anda dalam hal ini. Pada dasarnya WP menggunakan "Rewrite API" , yang merupakan fungsi, pembungkus tingkat rendah untukWP_Rewrite
kelas, yang dapat Anda baca di Codex . Theglobal $wp_rewrite
objek berdiri di layanan Anda untuk memeriksa atau berinteraksi dengan kelas.Plugin yang membantu mencarinya.
Toschos "T5 Rewrite" -Plugin dan Jan Fabrys "Monkeyman Rewrite Analyzer" -Plugin akan memandu jalan Anda. Saya telah menulis ekstensi kecil untuk "T5 Rewrite" untuk memadukannya dengan lancar dengan "Monkeyman Rewrite Analyzer", yang dapat Anda temukan di wiki wiki "T5 Rewrite" di GitHub .
"Monkeyman" -plugin menambahkan halaman baru, diajukan di menu UI admin di bawah Tools . "T5 Rewrite" -plugin menambahkan tab bantuan baru ke halaman Pengaturan > Permalinks . Ekstensi saya menambahkan tab bantuan ke Alat- halaman yang disebutkan juga.
Berikut adalah tangkapan layar dari apa yang tampak seperti konten tab "T5 Rewrite" bantuan.
Vorlage = Pola | Beschreibung = Penjelasan | Beispiele = Contoh
Catatan
"T5 Rewrite" -plugin melakukan pekerjaan yang luar biasa dengan membantu Anda memeriksa objek penulisan ulang. Dan itu bahkan lebih: itu menambah kemungkinan baru. Oleh karena itu (paling tidak di instalasi saya) bagian dari paket plugin dasar saya.
sumber
Sebenarnya, jika Anda melihat fungsi inti wp_insert_post (post.php), Anda akan melihat bahwa ia melakukan hal berikut:
Kuncinya adalah menggunakan wp_unique_post_slug dan sanitize_title:
sumber
Maafkan untuk melanjutkan pertanyaan lama, tetapi saya memiliki kebutuhan yang sama ketika mengetahui metode ini bekerja dengan baik untuk saya:
Metode ini menggunakan sanitasi ganda.
Yang pertama menggunakan
save
mode, di mana tag HTML dan PHP dilucuti, dan aksen dihapus (karakter beraksen diganti dengan non-aksen setara).Kedua
query
Mode memastikan semua ruang diganti dengan tanda hubung-
dan tanda baca lainnya dihapus.Semoga ini bisa membantu seseorang! :)
sumber