it-swarm.asia

هل sanitize_title كافٍ لإنشاء نشرات الرخويات؟

أرغب في إنشاء سبيكة لبعض السلاسل دون المرور عبر تدفق ووردبريس لتوليد الدودة. لذلك ، أريد أن أعرف الوظائف التي يستدعيها للحصول على سبيكة أنيقة. جربت sanitize_title () لكنه يترك٪ c2٪ a0 في النتيجة.

15
a_fan

كدت تصل. الوظيفة التي تحتاجها هي sanitize_title_with_dashes ($ title)

26
Brady

sanitize_title() يبدو أنه الوحيد الذي تحتاجه.

في سطر wp-include/default- filters.php 211 ، ستجد:

add_filter( 'sanitize_title', 'sanitize_title_with_dashes', 10, 3);

هذا يعني أن الاتصال sanitize_title() سيؤدي أولاً إلى إزالة جميع الأحرف الخاصة ، ثم تطبيق عامل التصفية sanitize_title ، وبالتالي استدعاء sanitize_title_with_dashes()

كما أشار @ JHoffmann ، لن يؤدي مجرد استدعاء sanitize_title_with_dashes() إلى إزالة الأحرف الخاصة.

2
Jules

حسنًا ، هناك إجابة بالفعل ، لكنني أردت توسيعها قليلاً ، لذلك فيما يلي النتائج التي توصلت إليها:

إذا نظرنا إلى wp_insert_post()_ التي نراها ، فسيتم تعقيم $post_name باستخدام wp_sanitize_title() (انظر wp-includes/post.php )

في الوظيفة sanitize_title() لدينا عامل تصفية sanitize_title. هذا مثير للاهتمام ، لأنه في عوامل التصفية الافتراضية ، يتم ربط sanitize_title_with_dashes() بهذا الفلتر (انظر wp-includes/default-filters.php ).

<?php
echo sanitize_title( 'Â+ÄÖßáèäç' ) // aaeoessaeaec
?>

جربت sanitize_title () لكنه يترك٪ c2٪ a0 في النتيجة.

هذا يبدو غريبا. سيكون من الرائع معرفة قيمة الإدخال ، ولكن يبدو أن اتباع wp_insert_post()sanitize_title() يكفي.

1
websupporter

بالإضافة إلى websupporter الرائع answer لقد وجدت ما يلي:

حسب استخدامك ، سوف يعتمد على ما تحتاجه.

sanitize_title() كما تقول:

تتم إزالة لهجات (يتم استبدال الأحرف المحركة بمكافئات غير محركة)

... و sanitize_title_with_dashes يقول:

لاحظ أنه لا يحل محل أحرف معلمة خاصة

لذلك ، مع هذا مثالstring: Â+Ä Ö %%% ßá %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~ èäç

sanitize_title() النتيجة:

أأ-س-SA-٪ 20-س س-ص -_- مجموعة شرق افريقيا

كما يمكنك أن ترى أنه يحتوي على استبدالأحرف معلمة بمكافئاتها غير المعلمة و فقد أزال جميع الأحرف الأخرى غير الأبجدية الرقمية بصرف النظر عن % الذي يتبعه رقم ، لكنك سترى أنه كان تمت إزالته عندما تبعته رسالة ؛ ربما يكون ذلك بسبب إدراكه على أنه تم ترميزه بالفعل . يتم فرض ذلك عند محاولة إدراج %c3 في السلسلة ، ولا يتم تجريده لأن %c3 هو تسلسل ترميز صالح.

sanitize_title_with_dashes النتيجة:

٪ C3٪ A2٪ C3٪ a4-٪ C3٪ b6-٪ C3٪ 9F٪ C3٪ a1-٪ 20-س س-ص -_-٪ C3٪ A8٪ C3٪ A4٪ C3٪ A7

حتى تستطيع أن ترى أنه لم يزيل الأحرف المعلّمة ، لكنه قام بتشفيرها.

الآن ، لنلقِ نظرة على سلسلة ذات لاأحرف مُعلَّمة) لنرى كيف يتصرف كلاهما ...

مثال على السلسلة:%%% building %20 oo %pp + -_^^#@!**()=[]|\/\'"<>?``~'

sanitize_title() النتيجة:

بناية٪ 20-س س-ص-_

sanitize_title_with_dashes النتيجة:

بناية٪ 20-س س-ص-_

هكذا يمكنك أن ترى أنها بالضبطنفس الشيء. لذلك يبدو أن الفرق الوحيد فيها هو أن يشفرمواثيق معلّقة بينما الآخر يستبدلهذه.

0
Brett