كيفية إزالة الافتراضي WordPress REST API التوجيهات ونقاط النهاية

نشرت: 2018-07-31

تم تقديم WordPress REST API في الإصدار 4.7 (Vaughan) في ديسمبر 2016. مثل أي تغيير مهم آخر تم إجراؤه على WP core ، تمت مناقشته بشدة (في الوقت الحالي ، يوليو 2018 ، Gutenberg هو موضوع مثل هذا النقاش / الجدل). في النهاية ، لم يحدث شيء. أولئك الذين لم يهتموا بـ REST API ما زالوا غير مهتمين. أولئك الذين يهتمون ببعض التطبيقات والتكاملات والمكونات الإضافية وغيرها من المشاريع الرائعة.

عندما تم دمج #wordpress REST API في الإصدار 4.7 الأساسي ، كان الناس يخافون! نفس الشيء الذي يفزعهم عند حدوث أي تغيير. في النهاية ، كل شيء يسير على ما يرام.

انقر على تويتر

وبينما نحن في موضوع المشاريع الرائعة. هل تعلم أن أنجحهم يبدأون بصفحة قادمة قريباً؟ وفي كثير من الحالات ، ستكون صفحة قادمة قريبًا تم إنشاؤها باستخدام المكون الإضافي Coming Soon & Maintenance Mode.

قريباً ووضع الصيانة

يأتي هذا المكون الإضافي مع أداة إنشاء بالسحب والإفلات ، وأكثر من 170 سمة ، وإعداد مُحسّنات محرّكات البحث الأفضل في فئتها ، وخدمات الرد الآلي والبريد الإلكتروني ، والعديد من الميزات الأخرى التي ستمكنك من إنشاء الصفحة المثالية التي ستأتي قريبًا في دقائق. علاوة على كل هذا ، تم دمج المكون الإضافي مع Depositphotos مما يعني أنه يمكنك العثور على أفضل الصور مباشرة من البرنامج المساعد. ولكن في حال لم تكن من المعجبين بالمجموعة التي يقدمها Depositphotos ، فإن Yay Images هي أيضًا مصدر رائع لمحتوى المخزون.

لكن يكفي بشأن ذلك ، دعنا نعود إلى موضوعنا الرئيسي ، REST API.

نحن نهتم بواجهة برمجة تطبيقات REST ونستخدمها عند إنشاء SaaSes تعمل بنظام WP. إنه مستقر وسريع وسهل العمل معه ويتناسب بشكل مريح مع WP وفي معظم الحالات موثق جيدًا. إذا كنت لا تعرف ما هو REST API ، فربما لا يكون هذا المنشور مناسبًا لك ولكن تحقق من REST API (فيديو ونص) وربما ستستخدمه في مشروعك التالي.

طريق؟ نقطة النهاية؟ أليس كل هذا نفس الشيء؟

لا ، ليس نفس الشيء. الاختلاف طفيف بالنسبة لمعظم الناس ، ويستخدمون المصطلحين مسار ونقطة نهاية بالتبادل ، لكن الأمر ليس بهذا التعقيد. المسار هو أكثر أو أقل من URL. إنه "الاسم" المستخدم للوصول إلى نقطة النهاية. في مسار واحد ، يمكن أن يكون لديك عدة نقاط نهاية لأن نقطة النهاية التي تستخدمها تعتمد على نوع طلب HTTP الذي تستخدمه. يمكن GET أو POST أو PUT أو DELETE ، وعادة ما تخدم أغراضًا مختلفة. سيؤدي الوصول إلى yoursite.com/wp-json/v2/posts/1 عبر GET إلى الحصول على تفاصيل النشر بالمعرف # 1. سيؤدي استخدام DELETE على نفس المسار إلى استدعاء نقطة نهاية مختلفة (أو وظيفة إذا كنت ترغب في ذلك) تحذف تلك المشاركة. يحتوي كتيب REST API الرسمي على مزيد من المعلومات حول هذا الموضوع ، لذا تعمق في التفاصيل.

#wordpress مسارات REST API ونقاط النهاية ليست هي نفسها! المسار هو "الاسم" المستخدم للوصول إلى نقطة نهاية. عادةً ما يرتبط المسار الفردي بنقاط نهاية متعددة.

انقر على تويتر

لماذا أقوم بإزالة المسارات أو نقاط النهاية الافتراضية لـ WP REST API؟

كما ناقشنا في المقالة حول إزالة قواعد إعادة الكتابة الافتراضية - هناك مئات الأسباب التي تجعل مطور WordPress يفعل ذلك.
"ستجعل WordPress أسرع لأنه لا يتعين عليها تحليل كل نقاط النهاية هذه." لا يزال شيئًا لا أتفق معه وأعتقد أن المكسب سيكون أقل من ميلي ثانية ولكنه لا يضر.

ترغب في الحفاظ على نظافة الأشياء ولأنك لا تستخدم واجهة برمجة تطبيقات REST - فلماذا لديك مسارات API؟ بالتأكيد ، هذا منطقي. ولكن في هذه الحالة ، استخدم مكونًا إضافيًا لتعطيل REST API تمامًا.

ثم هناك سبب لتعطيل المسارات الافتراضية (ونقاط النهاية). نحن نستخدم بشكل مكثف نقاط نهاية REST API المخصصة ولكننا لا نحتاج إلى النقاط الافتراضية. وبالتالي ، من الجيد الحفاظ على نظافة الأشياء. كما أنه لا يمكن أن يضر بالحكمة الأمنية لأننا نكشف عن أجزاء أقل من البيانات للعالم الخارجي القاسي.

أرني نقاط نهاية API الافتراضية

مرجع نقطة النهاية متاح في كتيب REST API. سيكون أكثر أو أقل من أي جزء من البيانات المتاحة للجمهور متاحًا من خلال REST API أيضًا. سيظهر طلب مثال لـ demo.wp-api.org/wp-json/wp/v2/posts عشر منشورات بتنسيق JSON. إذا كنت تريد إصدارًا يمكن قراءته من قِبل الإنسان من هذه الاستجابة ، فستحتاج إلى فك تشفير استجابة JSON. الشيء نفسه ينطبق على الصفحات والفئات وهياكل البيانات الأخرى. بنية البيانات ونقاط النهاية متشابهة جدًا كما ترى إذا كنت تتصفح المرجع.

الطريقة الأخرى لمعرفة المسارات الافتراضية هي إضافة هذا الرمز إلى ملف functions.php الخاص بالقالب الخاص بك ثم فتح yoursite.com/wp-json/. قم بتمكين الروابط الجميلة إذا لم تكن قد قمت بذلك بالفعل.

add_filter( 'rest_endpoints', 'show_default_endpoints' );
 
function show_default_endpoints( $endpoints ) { 
  var_export( array_keys( $endpoints ) );
  die;
}

يعرض 31 نقطة نهاية REST الافتراضية. الرقم ، بالطبع ، عرضة للتغيير مع إضافة وظائف أساسية جديدة. وسيكون الأمر مختلفًا إذا كان لديك أي مكونات إضافية تضيف نقاط نهاية مخصصة.

إزالة نقاط النهاية الافتراضية

يتطلب الكود أعلاه تغييرًا طفيفًا. قم بإرجاع مصفوفة فارغة ، وستختفي جميع نقاط النهاية.

add_filter( 'rest_endpoints', 'remove_default_endpoints' );
 
function remove_default_endpoints( $endpoints ) { 
  return array( );
}

تتضمن "جميع نقاط النهاية" نقاط النهاية المخصصة أيضًا ، لذلك من الحكمة عدم حذفها. إليك طريقة سهلة لإبقائهم نشطين:

add_filter( 'rest_endpoints', 'remove_default_endpoints_smarter' );
 
function remove_default_endpoints_smarter( $endpoints ) { 
  $prefix = 'your_custom_endpoint_prefix';

  foreach ( $endpoints as $endpoint => $details ) {
    if ( !fnmatch( '/' . $prefix . '/*', $endpoint, FNM_CASEFOLD ) ) {
      unset( $endpoints[$endpoint] );
    }
  }

  return $endpoints;
}

ما عليك سوى تخطي نقاط النهاية بالبادئة المخصصة الخاصة بك والاحتفاظ بها في المصفوفة. لا تنس إعادة المصفوفة.

تخصيص بادئة REST URL

نقاط النهاية المخصصة ، على الرغم من كونها مخصصة ، تستخدم نفس البادئة كنقاط النهاية الافتراضية. تبدو مثل mysite.com/wp-json/custom-endpoint/. ربما تجد ذلك قبيحًا أو لا تحب الأشياء الافتراضية. تغييرها هو مسألة سطر واحد من التعليمات البرمجية. لأغراض الاختبار ، ضع الكود أدناه في functions.php theme.php وبعد حفظ لوحة القيادة المفتوحة - الإعدادات - الروابط الثابتة لمسح قواعد إعادة الكتابة.

add_filter( 'rest_url_prefix', 'rest_url_prefix' );

function rest_url_prefix( ) {
  return 'api';
}

باستخدام عامل التصفية الموجود أعلى نقاط النهاية الخاصة بك ، ستكون mysite.com/api/custom-endpoint/ وفتح عنوان URL القديم mysite.com/wp-json/custom-endpoint/ سيؤدي إلى ظهور خطأ 404.

تأكد من تضمين رقم إصدار في نقاط النهاية المخصصة الخاصة بك حيث لا تتم إضافة البادئة تلقائيًا بواسطة WP. تضمن بادئة رقم الإصدار ألا تؤدي التغييرات التي تتم على الطريق إلى كسر العملاء الذين يستخدمون نقاط النهاية القديمة. ما عليك سوى تضمين بادئة الإصدار عند استدعاء register_rest_route() للحصول على شيء مثل mysite.com/api/v1/custom-endpoint/ واحتفظ بجميع نقاط النهاية الخاصة بك خلف "v1" بحيث يمكنك الحصول على "v2" وما إلى ذلك لاحقًا.

اختبر تغييراتك

لن تؤدي إزالة أو تعديل مسارات ونقاط نهاية REST API إلى إحداث أي فرق في 98٪ من مواقع WP. "لماذا؟" - لأنهم لا يستخدمون واجهة برمجة تطبيقات REST على الإطلاق. ولكن إذا حدث ذلك ، فيرجى التأكد من اختبار التطبيقات المتصلة لأنه ، كما هو الحال مع كل شيء ، يمكن أن تؤدي التغييرات إلى كسر الأشياء. ومن الأفضل اكتشاف الخلل اليوم وليس غدًا.