في الجزء الأول من هذا الدليل ، ألقيت نظرة على واجهة برمجة تطبيقات HTTP بشكل عام. لقد تعلمنا ما هو HTTP ، وتحدثنا عن بنية طلبات واستجابات HTTP وكيف تجتمع أنواع الإجراءات وعناوين URL معًا لتحديد ما تتلقاه في مقابل طلبك. في هذا المنشور ، سنلقي نظرة على واجهة برمجة تطبيقات وورد بريس HTTP.
واجهة برمجة تطبيقات وورد بريس HTTP
منذ حوالي الإصدار 2.7 ، أصبح لدى وورد بريس واجهة برمجة تطبيقات للتعامل مع HTTP . وهي تتألف من 9 وظائف ، من المحتمل أن تستخدم زوجًا منها فقط. يمكن تصنيف الوظائف في مجموعتين منفصلتين – واحدة لتقديم الطلبات والأخرى لقراءة النتائج.
wp_remote_get()، wp_remote_post()، wp_remote_head()استخدم طرق GET و POST و HEAD على التوالي لطلب البيانات من عنوان URL معين. و wp_remote_request()الوظيفة هي الوظيفة العامة التي تسمح لك بتحديد URL وطريقة للذهاب معها.
الوظائف المستخدمة لقراءة الاستجابات هي بالمثل وصف ذاتي. wp_remote_retrieve_body()تحصل على نص الاستجابة ، wp_remote_retrieve_header()تحصل الوظيفة على رأس مسمى. تقوم wp_remote_retrieve_headers()الوظيفة بإرجاع جميع الرؤوس في شكل مصفوفة ، wp_remote_retrieve_response_code()وتمنحك رمز الاستجابة wp_remote_retrieve_response_message()وتعيد رسالة الاستجابة.
هذا كل ما في الأمر ، كل ما نحتاج إلى معرفته هو معرفة كيفية تحديد الرؤوس لتقديم الطلبات المناسبة.
تقديم الطلبات
دعنا نستخدم wp_remote_get()الوظيفة لتقديم طلب. سنستخدم المعلمة الأولى لتعيين عنوان URL والمعاملة الثانية لإضافة الوسائط. يمكنك العثور على مجموعة كاملة من المعلمات المدعومة في Codex ، وسأركز على معلومات الرأس هنا.
للحصول على رسالة حالة المستخدم من Twitter ، ستحتاج إلى استخدام statuses/user_timeline.jsonالمسار إلى جانب https://api.twitter.com/1.1عنوان URL وتمرير رمز حامل للمصادقة – والذي قمت بإنشائه سابقًا. يجب إضافة رمز الحامل كرأس ترخيص في شكل Bearer [TOKEN].
$token = 'Sijbwrf82wdaBief';
$response = wp_remote_get('https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=kinsta', array(
'headers' => array(
'Authorization' => 'Bearer ' . $token
),
));
يؤدي إجراء هذا الطلب إلى إرجاع ثروة من المعلومات التي يمكن الحصول عليها من خلال طباعة $responseالمتغير. يمكنك أيضًا استخدام wp_remote_retrieveوظائف الكتابة للحصول على جزء من الاستجابة.
في معظم الأوقات ، يحتوي النص الأساسي على المعلومات الضرورية ، عادةً بتنسيق JSON. في PHP يمكننا تحويل ذلك إلى مصفوفة بسهولة:
$data = json_decode( $response['body'], true )
الوصول إلى Github API
دعونا نبني مثالًا سريعًا يسرد أحدث مستودعات Github الخاصة بنا في عنصر واجهة مستخدم وورد بريس. أولاً ، ستحتاج إلى تسجيل الدخول إلى Github والانتقال إلى ملف التعريف الخاص بك وتحريره والانتقال إلى “رموز الوصول الشخصية” حيث يمكنك إنشاء رمز مميز.
رموز الوصول إلى جيثب
رموز الوصول إلى جيثب
كخطوة تالية ، لنقم بإنشاء قالب عنصر واجهة مستخدم فارغ. سيكون لهذه الأداة خياران: مكان لك لإضافة رمز API الخاص بك وعنوان. هذه ليست أفضل طريقة لأنها تحفظ الرمز المميز الخاص بك في قاعدة البيانات ، ولكنها جيدة لأغراض المثال لدينا.
class My_Github_Widget extends WP_Widget {
public function __construct() {
parent::__construct(
'my_github_widget',
'My Github Repos',
array( 'description' => 'A widget that showcases your Github repos' )
);
}
public function widget( $args, $instance ) {
// Widget output
}
public function form( $instance ) {
$token = ! empty( $instance['token'] ) ? $instance['token'] : '';
$title = ! empty( $instance['title'] ) ? $instance['title'] : 'From Github';
<strong>?></strong>
<label for="get_field_id( 'title' ); ?>">Title <input class="widefat" id="get_field_id( 'title' ); ?>" name="get_field_name( 'title' ); ?>" type="text" value="">
<label for="get_field_id( 'token' ); ?>">Github API Token <input class="widefat" id="get_field_id( 'token' ); ?>" name="get_field_name( 'token' ); ?>" type="text" value="">
<?php } }
لا أريد أن أخوض كثيرًا في كيفية إنشاء الأدوات هنا. إذا كنت تريد معرفة المزيد ، فقم بإلقاء نظرة على دليل Widgets API في Codex. الشيء المهم هو أن محتوى widget()الطريقة سينتج محتوى عنصر واجهة المستخدم الخاص بنا. داخل هذه الوظيفة ، سنتصل بـ Github باستخدام طلب HTTP ثم تنسيق الاستجابة وإخراجها. إليك كيفية القيام بكل ذلك – يتم إدخال كل التعليمات البرمجية التالية في widget()الطريقة.
تريد أن تعرف كيف زدنا من حركة المرور لدينا أكثر من 1000 ٪؟
انضم إلى أكثر من 20000 آخرين ممن يتلقون رسائلنا الإخبارية الأسبوعية مع نصائح من الداخل حول وورد بريس!
إشترك الآن
echo $args['before_widget'];
if ( ! empty( $instance['title'] ) ) {
echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ). $args['after_title'];
}
$args = array(
'headers' => array(
'Accept' => 'application/vnd.github.v3+json',
'Authorization' => 'token 3f4f654ab31c2f15e839c74c952e5de2f562f1ee'
)
);
$response = wp_remote_get( 'https://api.github.com/user/repos', $args );
$repos = json_decode( $response['body'], true );
if( !empty( $repos ) ) {
echo '<ul>';
foreach( $repos as $repo ) {
echo '<li><a href="' . $repo['url'] . '" target="_blank">' . $repo['name'] . '</a></li>';
}
echo '</ul>';
}
echo $args['after_widget'];
يبدأ ببساطة بإضافة عنصر غلاف الأداة والعنوان في الجزء العلوي وينتهي بإغلاق غلاف الأداة ، ويكون القسم الرئيسي من الكود بين الاثنين.
أولاً ، قمت بإعداد رؤوس طلبات HTTP الخاصة بي. قد يكون السؤال الأول: كيف أعرف المعلمات التي يجب إضافتها؟ و Authorizationالرأس هو أكثر قليلا المهم، وأنا أقرأ أنه في مصادقة القسم من مستندات API.
و Acceptليس مطلوبا رأس ولكن في الجزء العلوي من الصفحة مستندات ذاتها دليل يشجعك على توفير هذه.
أستخدم بعد ذلك json_decode()نص الاستجابة وأقوم ببساطة بالتنقل عبر المصفوفة الناتجة ، وإنشاء قائمة من الروابط.
الخطوات التالية
إذا كنت تعتقد أن ذلك كان سهلاً ، فأنت على حق تمامًا ، إنه كذلك! الشيء الصعب هو التأكد من تغطية جميع الزوايا دون إهدار الموارد. هناك مشكلتان في الكود تتطلبان اهتمامنا الفوري.
إذا كانت هناك أي مشكلة في واجهة برمجة التطبيقات – والتي قد تتضمن أخطاء غير معروفة ، وحسابات محدودة السعر وما إلى ذلك – فقد نصطدم بخطأ كبير. نحن فقط نتحقق مما إذا كان النص فارغًا أم لا قبل أن نعرض القائمة.
إذا كان لدينا خطأ في أيدينا ، فمن المحتمل أن يحتوي الجسم على معلومات خطأ لذلك لن يكون فارغًا في هذه الحالة أيضًا. من المحتمل أننا سنقوم بسرد عناصر استجابة الخطأ ، ولكن نظرًا لأن هذه العناصر لن تكون موجودة والخصائص url، nameفسننتهي بعناصر قائمة فارغة وتحذيرات PHP.
المسألة الثانية هي أن هذا مجرد تبذير. نحن نتصل بخدمة خارجية عند كل تحميل للصفحة مما قد يؤثر سلبًا على خوادمنا وقد يتسبب في تقييد الحساب على Github. حتى لو لم يكن الأمر كذلك ، ما مدى احتمالية تغيير قائمة Github repo الخاصة بك بين عرضين للصفحة ، وما مدى أهمية الحصول على المعلومات الثانية هنا؟
أنا شخصياً أوصي باستخدام العابرين في مثل هذه الحالة. يسمح لك المؤقت بتخزين استجابة الطلب مع وقت انتهاء الصلاحية. إذا قمت بتعيين انتهاء الصلاحية على يوم واحد ، فسيتم استرداد البيانات من Github مرة واحدة ، ثم مباشرة من قاعدة البيانات الخاصة بك خلال الـ 24 ساعة القادمة. بعد انتهاء الصلاحية يتم استرداده من Github مرة أخرى وحفظه في قاعدة البيانات.
هذا يقلل من مكالمات واجهة برمجة التطبيقات الخاصة بك من واحد لكل تحميل صفحة إلى واحد في اليوم ، وهو تحسن كبير وليس الكثير من المقايضة أيضًا.
ملخص
يجعل وورد بريس من السهل التفاعل مع واجهات برمجة التطبيقات من جميع أنحاء الويب. سيسمح لك استخدام وظيفتين مدمجتين بسحب بيانات أكثر ثراءً وذات صلة للمستخدمين.
إلى جانب التعقيم والتحقق من الأخطاء وآلية التخزين المؤقت ، يمكنك إنشاء تطبيق فعال ليس فقط أكثر فائدة ، ولكنه أقل استهلاكًا للموارد مما قد تتخيله.
إذا كنت قد استخدمت وورد بريس HTTP API لتوصيل وورد بريس بواجهة برمجة تطبيقات تابعة لجهة خارجية ، فأخبرنا بذلك ، فسيكون من الرائع أن تسمع عن عملك!
وفر الوقت والتكاليف وحقق أقصى قدر من أداء الموقع من خلال:
مساعدة فورية من خبراء استضافة وورد بريس ، 24/7.
تكامل Cloudflare Enterprise.
يصل الجمهور العالمي إلى 28 مركز بيانات حول العالم.
التحسين من خلال مراقبة أداء التطبيقات المضمنة لدينا.
كل ذلك وأكثر من ذلك بكثير ، في خطة واحدة بدون عقود طويلة الأجل ، وعمليات الترحيل المدعومة ، وضمان استرداد الأموال لمدة 30 يومًا. تحقق من خططنا أو تحدث إلى قسم المبيعات للعثور على الخطة المناسبة لك.