Saya ingin menghasilkan siput untuk beberapa string tanpa melalui aliran generasi siput WordPress. Karena itu, saya ingin tahu fungsi mana yang dipanggil untuk mendapatkan siput yang rapi. Saya mencoba sanitize_title () tetapi hasilnya tetap% c2% a0.
seo
slug
sanitization
sebuah kipas
sumber
sumber
èäç
dll. Akan tetap di tempat dengan fungsi ini.sanitize_title_with_dashes
jugasanitize_title
meninggalkan beberapa karakter khusus yang dapat merusak beberapa sistem. Saya ingin pendekatan yang lebih universal dalam mengurangi string lihatlahsanitize_html_class
Yah, sudah ada jawaban, tapi saya ingin sedikit mengembangkannya, jadi inilah temuan saya:
Jika kita melihat-
wp_insert_post()
lihat,$post_name
kita dibersihkan dengan menggunakanwp_sanitize_title()
(lihatwp-includes/post.php
)Dalam fungsi
sanitize_title()
kami memiliki filtersanitize_title
. Ini menarik, karena dalam filter defaultsanitize_title_with_dashes()
terhubung ke filter ini (lihatwp-includes/default-filters.php
).Ini kedengarannya aneh. Akan bagus untuk mengetahui nilai input, tetapi mengikuti
wp_insert_post()
sanitize_title()
tampaknya sudah cukup.sumber
sanitize_title()
tampaknya menjadi satu-satunya yang Anda butuhkan.Dalam baris 211 wp-include / default-filter.php Anda akan menemukan:
Ini berarti bahwa panggilan
sanitize_title()
akan menghapus semua karakter khusus terlebih dahulu, kemudian menerapkansanitize_title
filter, sehingga memanggilsanitize_title_with_dashes()
Seperti @JHoffmann tunjukkan, hanya menelepon
sanitize_title_with_dashes()
tidak akan menghapus karakter khusus.sumber
Selain jawaban hebat websupporter, saya menemukan di bawah ini:
Tergantung pada penggunaan Anda, itu akan tergantung pada apa yang Anda butuhkan.
sanitize_title()
seperti yang tertulis:... dan
sanitize_title_with_dashes
mengatakan:Jadi, dengan contoh string ini:
Â+Ä Ö %%% ßá %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~ èäç
sanitize_title()
hasil:Seperti yang Anda lihat, ia telah mengganti karakter beraksen dengan padanannya yang tidak beraksen dan telah menghapus semua karakter non-alfanumerik lainnya selain dari
%
yang diikuti oleh angka, tetapi Anda akan melihatnya dihapus ketika diikuti oleh huruf; mungkin ini karena ia menganggapnya sudah dikodekan . Ini diberlakukan ketika Anda mencoba memasukkan%c3
ke dalam string Anda, itu tidak menghapusnya sebagai%c3
urutan penyandian yang valid.sanitize_title_with_dashes
hasil:Jadi seperti yang Anda lihat, karakter aksennya tidak dihapus, tetapi disandikan.
Sekarang mari kita lihat string tanpa aksen karakter untuk melihat bagaimana mereka berdua berperilaku ...
String Contoh:
%%% building %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~'
sanitize_title()
hasil:sanitize_title_with_dashes
hasil:Jadi seperti yang Anda lihat mereka persis sama. Jadi tampaknya satu-satunya perbedaan di antara mereka adalah bahwa satu mengkodekan piagam aksen sementara yang lain menggantikannya .
sumber