كلنا نعرف أنه في اﻹصدار 4.4 لووردبريس تم دمج WP Rest API في النواة، لكن هل يستعملها أحد منا حاليا؟ هل لديك في موقعك تطبيق معيّن يستعملها؟ إذاً لماذا نتركها مفعّلة؟ هل تعلم أن WP Rest API تضيف روابط أنت لا حاجة لك بها إلى منطقة ال head؟
وجود روابط أكثر يعني استعلامات أكثر، يعني زيادة في مدة تحميل الموقع، وكما نعلم جميعنا سرعة تحميل المواقع هي جد مهمة في تحسبن اﻷرشفة وتحسين تجربة المستخدم. إذا كانت سرعة موقعك وأدائه مهمين بالنسبة لك، من الواجب عليك تعطيل WP Rest API في حالة عدم استعمالك لها. كيف ذلك؟ لا تقلق، سأشرح لك اﻷمر كله حالاً 🙂
هناك طريقتين لحذف روابط WP Rest API من ترويسة (head) الموقع، اﻷولى عبر حذف كل رابط على حدا والثانية عبر تعطيل WP Rest API بشكل كلي … لنبدأ إذا!!
تعطيل رابط REST API من ترويسة HTTP
الرابط يكون على الشكل التالي:
Link: <https://saidelbakkali.com/wp-json/>; rel="https://api.w.org/"
يمكننا حذفه بإضافة الكود التالي لملف functions.php
للقالب المفعّل أو ﻹضافتك المخصّصة:
remove_action('template_redirect', 'rest_output_link_header', 11);
تعطيل رابط REST API من ترويسة HTML
الرابط الثاني يكون على هذا الشكل:
<link rel='https://api.w.org/' href='https://saidelbakkali.com/wp-json/' />
وأيضا يمكننا حذفه بإضافة هذا الكود في نفس المكان المذكور سابقاً.
remove_action('wp_head', 'rest_output_link_wp_head', 10);
remove_action('xmlrpc_rsd_apis', 'rest_output_rsd');
تعطيل WP Rest API كلياً
أيضاً، إذا أردت يمكنك تعطيل WP Rest API بشكل كامل، وذلك بوضع هذه الوظيفة … هل أقول مرة أخرى أين تضعها؟ في ملف functions.php للقالب المفعّل أو في إضافتك المخصّصة.
/**
* Disable REST API if user not logged in.
*
* @param null $access
* @return WP_Error|null|true
*/
function disable_wp_rest_api( $access ) {
if ( ! is_user_logged_in() ) {
$message = apply_filters( 'disable_wp_rest_api_error', __( 'REST API restricted to authenticated users.', 'saidelbakkali' ) );
return new WP_Error( 'rest_login_required', $message, array( 'status' => rest_authorization_required_code() ) );
}
return $access;
}
add_filter( 'rest_authentication_errors', 'disable_wp_rest_api' );
كما تلاحظ، السطرين اﻷولين يقومان بتعطيل اﻹصدار اﻷول ل wp rest api والسطرين المواليين يقومان بتعطيل اﻹصدار الثاني.
لا تريد إضافة الكود يدوياً؟ إذاً قم بتنصيب إضافة Disable JSON API، اﻹضافة تعمل مباشرة بعد تفعيلها ولا تحتاج لإعدادت إضافية.
أتمنا أن أكون قد أفدتك بهذه التدوينة، في المرة القادمة سنرى كيفية تنظيف ترويسة ووردبريس بشكل أكبر.
السلام عليكم.