WordPress slug nesil akışı geçmeden bazı dizeler için slug oluşturmak istiyorum. Bu nedenle, düzgün bir bilgi almak için hangi işlevleri çağırdığını bilmek istiyorum. Sanitize_title () denedim ama sonuç olarak% c2% a0 bırakır.
WordPress slug nesil akışı geçmeden bazı dizeler için slug oluşturmak istiyorum. Bu nedenle, düzgün bir bilgi almak için hangi işlevleri çağırdığını bilmek istiyorum. Sanitize_title () denedim ama sonuç olarak% c2% a0 bırakır.
Yanıtlar:
Neredeyse bitti. İhtiyacınız olan işlev sanitize_title_with_dashes ($ title)
èäç
vb bu işlevle yerinde kalacak.
sanitize_title_with_dashes
yanı sıra sanitize_title
bazı sistemlerin kırabilir bazı özel karakterleri bırakın. Dizeleri azaltmada daha evrensel bir yaklaşım istiyorumsanitize_html_class
Zaten bir cevap var, ama biraz genişletmek istedim, işte bulgularım:
Eğer bir göz atarsak wp_insert_post()
görürüz, $post_name
kullanarak sterilize edilir wp_sanitize_title()
(bkz. wp-includes/post.php
)
Fonksiyonda sanitize_title()
bir filtremiz var sanitize_title
. Bu ilginçtir, çünkü varsayılan filtrelerde sanitize_title_with_dashes()
bu filtreye asılır (bkz. wp-includes/default-filters.php
).
<?php
echo sanitize_title( 'Â+ÄÖßáèäç' ) // aaeoessaeaec
?>
Sanitize_title () denedim ama sonuç olarak% c2% a0 bırakır.
Kulağa tuhaf geliyor. Girdi değerini bilmek harika olurdu, ancak takip wp_insert_post()
sanitize_title()
etmek yeterli görünüyor.
sanitize_title()
ihtiyacınız olan tek şey gibi görünüyor.
Wp-include / default-filters.php satır 211'de şunları bulacaksınız:
add_filter( 'sanitize_title', 'sanitize_title_with_dashes', 10, 3);
Bu, çağrının sanitize_title()
önce tüm özel karakterleri kaldıracağı, ardından sanitize_title
filtreyi uygulayacağı vesanitize_title_with_dashes()
@JHoffmann'ın işaret ettiği gibi, sadece aramak sanitize_title_with_dashes()
özel karakterleri kaldırmayacaktır.
Websupporter'ın büyük cevabına ek olarak aşağıdakileri buldum:
Kullanımınıza bağlı olarak, ihtiyacınız olan şeye bağlı olacaktır.
sanitize_title()
dediği gibi:
aksanlar kaldırılır (aksanlı karakterler aksanlı olmayan eşdeğerlerle değiştirilir)
... ve sanitize_title_with_dashes
diyor ki:
Özel aksanlı karakterlerin yerini almadığını unutmayın
Yani, bu örnek dize ile:Â+Ä Ö %%% ßá %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~ èäç
sanitize_title()
sonuç:
aa-o-sa-% 20 oo-s -_- EAC
Eğer gelmiştir görebileceğiniz gibi değiştirilmiştir onların olmayan aksanlı eşdeğerleriyle aksanlı karakterler ve bunun dışında diğer tüm alfasayısal olmayan karakterler kaldırdığı %
izleyen bir sayı, ama bunu bir mektupla izledi zaman kaldırıldı göreceksiniz; belki de bunun zaten kodlanmış olarak algılanmasıdır . Bu, dizenize eklemeyi denediğinizde uygulanır, geçerli bir kodlama dizisi %c3
olduğu gibi dizgiyi %c3
şeritlemez.
sanitize_title_with_dashes
sonuç:
% C3% a2% c3% a4-,% c3% b6-% c3% 9f% c3% a1-% 20 oo-s -_-% c3% a8% c3% a4% c3% a7
Gördüğünüz gibi aksanlı karakterleri kaldırmamış, ancak kodlamıştır.
Şimdi bir dize de yapalım bakmak hiçbir aksanlı karakterler nasıl ikisi de davranacağınızı görmemiz için ...
Örnek Dize: %%% building %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~'
sanitize_title()
sonuç:
bina-% 20 oo-s-_
sanitize_title_with_dashes
sonuç:
bina-% 20 oo-s-_
Gördüğünüz gibi tam olarak aynılar. Bu yüzden, aralarındaki tek fark, birinin vurgulanmış karakterleri kodlarken diğerinin yerini almasıdır.