شارك المقال

باستخدام وورد بريس HTTP API

A VPN is an essential component of IT security, whether you’re just starting a business or are already up and running. Most business interactions and transactions happen online and VPN

تتكون واجهة برمجة تطبيقات وورد بريس  HTTP من مجموعة من الوظائف التي ستساعدك على إجراء مكالمات HTTP بسهولة أكبر. لا داعي للعبث مع file_get_contents أو cURL بعد الآن ، فقط واجهة واحدة موحدة. يعد هذا أمرًا رائعًا للتفاعل مع واجهات برمجة تطبيقات الطرف الثالث ، خاصةً واجهات برمجة تطبيقات REST الكاملة مثل Twitter و Facebook و MailChimp وغيرها.

أساسيات HTTP

لقد رأينا جميعًا HTTP قيد التشغيل من قبل. في الواقع ، إذا كانت هذه هي المرة الأولى لك على الويب على الإطلاق وكانت هذه هي أول ما تقرأه ، فقد رأيت بالفعل HTTP يعمل بسحره. HTTP هو بروتوكول شبكة يستخدم لتسليم جميع الملفات والبيانات (الموارد) عبر Interwebs.

وهناك أساسا قسمين للمعادلة: ل طلب HTTP و استجابة HTTP ، أو المعاملة. كلا من الطلب والاستجابة متشابهان للغاية في الهيكل ، وكلاهما يتكون من أربعة أجزاء:

سطر أولي

صفر أو أكثر من خطوط الرأس

سطر فارغ

محتوى اختياري للجسم

الخط الأولي

تستخدم الطلبات السطر الأولي لإرسال ثلاث أجزاء من المعلومات: اسم الطريقة والمسار وإصدار HTTP. على سبيل المثال ، عند عرض صفحة مدونة Kinsta الرئيسية ، سترى هذا في السطر الأول من الطلب.

GET /blog/ HTTP/1.1

توفر الردود أيضًا ثلاث أجزاء من المعلومات ، وإن كانت مختلفة نوعًا ما: إصدار HTTP ورمز الاستجابة ووصف الاستجابة. عند تقديم طلب إلى مدونة Kinsta الرئيسية ، سترسل استجابة HTTP بالسطر الأولي التالي:

HTTP/1.0 200 OK
الرؤوس

تحتوي الرؤوس على أجزاء مختلفة من المعلومات حول الطلب أو الاستجابة. يحدد HTTP 1.1 46 نوعًا من الترويسات ولكن مطلوب واحد فقط (للطلبات فقط) ، رأس “المضيف”. ألق نظرة على لقطة الشاشة من أدوات مطوري Chrome التي تعرض بعض الرؤوس المرسلة مع طلب إلى مدونة Kinsta الرئيسية:

تم إرسال رؤوس طلب HTTP

الجسم

يحتوي الجسم عادة على بيانات حول المورد المطلوب. إذا قمت بإرسال طلب GET إلى مدونة Kinsta الرئيسية ، فيجب أن تتلقى HTML المطلوب لعرض الصفحة (المصدر) في محتوى النص الأساسي.

معلومات اكثر

هذا كل ما تحتاج لمعرفته الآن حول HTTP. سنركز في الغالب على اسم الطريقة (GET ، POST ، إلخ) والعناوين والجسم. إذا كنت ترغب في معرفة المزيد ، فإنني أوصي بشرح جيمس مارشال لـ HTTP ، فهو كتاب تمهيدي مكتوب جيدًا لاحتياجات HTTP الخاصة بك.

حول Restful APIs

تهدف Restful APIs أو منهجية REST إلى توفير طريقة بسيطة وقياسية للتفاعل مع أحد التطبيقات (هنا يمكنك معرفة المزيد حول أساسيات وورد بريس REST API ). غالبًا ما يتم استخدامه جنبًا إلى جنب مع HTTP لإنشاء نظام تفاعلات مفهوم للغاية. لأنه يقوم على مسارات و HTTP الأفعال .

أفعال HTTP هي نفس أسماء الطرق التي رأيناها سابقًا ، والأكثر شيوعًا هي: GET ، POST ، PUT ، DELETE. أعتقد أن PUT هو الشيء الوحيد الغامض هنا ، فكر في الأمر على أنه أمر تحديث. عند استخدام هذه الأفعال جنبًا إلى جنب مع المسارات ، يمكننا بناء نظام ذي معنى:

GET /post/1/سيتم استخدامها لاسترداد المنشور بمعرف 1. DELETE /post/1/سيتم استخدامه لحذف نفس المنشور. يمكننا أيضًا استخدامه PUT /post/1/لتحديثه ، وتوفير المعلومات ذات الصلة في نص الطلب والعناوين.

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

باستخدام وورد بريس HTTP API

مسلحين بكل هذه المعرفة ، يمكننا بسهولة التعرف على كيفية عمل وورد بريس HTTP API. الطرق الأربعة المستخدمة لتقديم الطلبات واعتراض الردود هي:

wp_remote_get()

wp_remote_post()

wp_remote_head()

wp_remote_request()

أول وظيفتين تشرحان نفسها بنفسهما ، حيث تستخدمان طرق GET و POST على التوالي في الطلب. تستخدم الوظيفة الثالثة طريقة HEAD ، وهو شيء لم نتحدث عنه بعد. تُستخدم هذه الطريقة لاسترداد رؤوس الاستجابة فقط. يمكن أن يوفر هذا الكثير من النفقات العامة إذا احتجنا فقط إلى بعض البيانات الوصفية حول أحد الموارد. الوظيفة النهائية هي وظيفة عامة ، يمكنك تحديد الطريقة التي ترغب في استخدامها ضمن معلمات الوظيفة.

هناك خمس وظائف إضافية يمكننا استخدامها لاسترداد أجزاء معينة من الاستجابة. هذه هي في الأساس اختصارات للتنقل عبر كتلة البيانات التي نتلقاها:

wp_remote_retrieve_body()

wp_remote_retrieve_header()

wp_remote_retrieve_headers()

wp_remote_retrieve_response_code()

wp_remote_retrieve_response_message()

أول طلب HTTP لدينا

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

$response = wp_remote_head( 'https://kinsta.com/blog/' );
var_dump( $response )

كما ترون من الرد الذي حصلنا عليه أدناه ، فإن قسم النص فارغ (بما أننا نستخدم طريقة HEAD) ويتم عرض جميع الرؤوس. للحصول على الرؤوس فقط بدون جميع أعضاء المصفوفة الآخرين ، يمكننا استخدام wp_remote_retrieve_headers()الوظيفة.

تريد أن تعرف كيف زدنا من حركة المرور لدينا أكثر من 1000 ٪؟

انضم إلى أكثر من 20000 آخرين ممن يتلقون رسائلنا الإخبارية الأسبوعية مع نصائح من الداخل حول وورد بريس!

إشترك الآن

array (size=5)
  'headers' => 
    array (size=13)
      'server' => string 'nginx' (length=5)
      'date' => string 'Wed, 22 Jul 2015 14:22:07 GMT' (length=29)
      'content-type' => string 'text/html; charset=UTF-8' (length=24)
      'connection' => string 'close' (length=5)
      'vary' => string 'Accept-Encoding' (length=15)
      'x-pingback' => string 'https://kinsta.com/xmlrpc.php' (length=29)
      'x-powered-by' => string 'HHVM/3.8.0' (length=10)
      'link' => string '; rel="https://github.com/WP-API/WP-API"' (length=68)
      'x-frame-options' => string 'DENY' (length=4)
      'x-content-type-options' => string 'nosniff' (length=7)
      'strict-transport-security' => string 'max-age=31536000' (length=16)
      'x-kinsta-cache' => string 'HIT' (length=3)
      'content-encoding' => string 'gzip' (length=4)
  'body' => string '' (length=0)
  'response' => 
    array (size=2)
      'code' => int 200
      'message' => string 'OK' (length=2)
  'cookies' => 
    array (size=0)
      empty
  'filename' => null
جعل الإحساس بواجهات برمجة التطبيقات

تويتر وورد API

أكبر عائق أراه للمطورين هو الكم الهائل من الأشياء الجديدة التي يحتاجون إلى وضعها في مكانها لإجراء مكالمة واجهة برمجة التطبيقات. تحتاج إلى معرفة HTTP ، وكيفية تقديم الطلبات ، وكذلك كيفية المصادقة بشكل صحيح ، وبدون ذلك ، ستفشل كل مكالمة. دعنا نلقي نظرة على مثال من خلال Twitter API نظرًا لأن لديهم وثائق رائعة.

سننظر في مصادقة التطبيق فقط (وهو تدفق أسهل) ، وسأمر بنفس الخطوات التي يقترحها Twitter. قبل أن نبدأ ، تأكد من إنشاء تطبيق Twitter .

يجب أن تكون قادرًا على إضافة الكود أدناه في أي مكان إلى سمة أو مكون إضافي ، ولكن ، كما هو الحال من قبل ، تأكد من استخدام موقع اختبار!

الخطوة 1: تشفير مفتاح المستهلك والسر

بمجرد إنشاء تطبيق ، يجب أن يكون لديك مفتاح عميل وسر في متناول اليد. لتسهيل الأمور ، دعنا ننشئ ثوابت تحمل هذه المعلومات لنا.

define( 'TWITTER_CONSUMER_KEY', '12disnir382jeqwdasd23wdasi' );
define( 'TWITTER_CONSUMER_SECRET', '23wdajskduhtrq2c32cuq9r8uhuf' )

تم توضيح الخطوات الثلاث لإنشاء نسخة مشفرة من هذه في المستندات:

هل تعاني من مشاكل التوقف و وورد بريس؟ Kinsta هو حل الاستضافة المصمم لتوفير الوقت! تحقق من ميزاتنا

يقوم عنوان URL بترميز مفتاح العميل وسر العميل

اربطهم بنقطتين

يقوم Base64 بترميز السلسلة بأكملها

في PHP سيكون هذا سهلاً جدًا ، هنا يذهب!

$key = urlencode( TWITTER_CONSUMER_KEY );
$secret = urlencode( TWITTER_CONSUMER_SECRET );
$concatenated = $key . ':' . $secret;
$encoded = base64_encode( $concatenated );
الخطوة 2: الحصول على رمز حامل

بدلاً من استخدام كلمة مرورك الفعلية ، فأنت ترسل إلى Twitter السلسلة المشفرة (التي تستخدم بيانات اعتماد واجهة برمجة التطبيقات) وتتلقى تصريح مرور مؤقت صالح لفترة زمنية محددة. للقيام بذلك ، سنقوم بتقديم طلب HTTP ، وهذا ما يجب أن يقوله Twitter:

يجب أن يكون الطلب طلب HTTP POST.

يجب أن يشتمل الطلب على رأس “تفويض” بقيمة Basic.

يجب أن يتضمن الطلب رأس نوع المحتوى بقيمة application / x-www-form-urlencoded ؛ charset = UTF-8.

يجب أن يكون نص الطلب Grant_type = client_credentials.

هيا لنبدأ مع الأساسيات. نحن نعلم أننا بحاجة إلى طلب POST لذلك سنستخدمه wp_remote_post(). تأخذ الوظيفة إلى المعلمات ؛ الأول هو عنوان URL ، والثاني يحتوي على وسيطات اختيارية. سيكون عنوان URL https://api.twitter.com/oauth2/token، سنستخدم المعلمة الثانية للتعامل مع جميع المتطلبات الأخرى.

$args = array(
    'headers' => array(
        'Authorization' => 'Basic ' . $encoded,
        'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8'
    ),
    'body' => 'grant_type=client_credentials'
);
$response = wp_remote_post( 'https://api.twitter.com/oauth2/token', $args );

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

array (size=5)
  'headers' => 
    array (size=23)
      'cache-control' => string 'no-cache, no-store, must-revalidate, pre-check=0, post-check=0' (length=62)
      'content-disposition' => string 'attachment; filename=json.json' (length=30)
      'content-encoding' => string 'deflate' (length=7)
      'content-length' => string '142' (length=3)
      'content-type' => string 'application/json;charset=utf-8' (length=30)
      'date' => string 'Wed, 22 Jul 2015 14:47:37 GMT' (length=29)
      'expires' => string 'Tue, 31 Mar 1981 05:00:00 GMT' (length=29)
      'last-modified' => string 'Wed, 22 Jul 2015 14:47:37 GMT' (length=29)
      'ml' => string 'A' (length=1)
      'pragma' => string 'no-cache' (length=8)
      'server' => string 'tsa_b' (length=5)
      'set-cookie' => string 'guest_id=v1%3A14375720938219946; Domain=.twitter.com; Path=/; Expires=Fri, 21-Jul-2017 14:47:37 UTC' (length=100)
      'status' => string '200 OK' (length=6)
      'strict-transport-security' => string 'max-age=631138519' (length=17)
      'x-connection-hash' => string 'd8b10926f99dwef93rd7edbe5a71a97a' (length=32)
      'x-content-type-options' => string 'nosniff' (length=7)
      'x-frame-options' => string 'SAMEORIGIN' (length=10)
      'x-response-time' => string '34' (length=2)
      'x-transaction' => string 'ef0ebwefweece62ef' (length=16)
      'x-tsa-request-body-time' => string '0' (length=1)
      'x-twitter-response-tags' => string 'BouncerCompliant' (length=16)
      'x-ua-compatible' => string 'IE=edge,chrome=1' (length=16)
      'x-xss-protection' => string '1; mode=block' (length=13)
  'body' => string '{"token_type":"bearer","access_token":"AAAAAAAAAAAAAAAAAAAAAFoafQAAAAAAqg%2BxmuH83hjsod6crH5bKTUX9Arc%3D5dWpp0XCTDjyiXxMC7LDLg8JbzPdGlCsJi2R1qjY1FMksTAFyG"}' (length=155)
  'response' => 
    array (size=2)
      'code' => int 200
      'message' => string 'OK' (length=2)
  'cookies' => 
    array (size=1)
      0 => 
        object(WP_Http_Cookie)[303]
          public 'name' => string 'guest_id' (length=8)
          public 'value' => string 'v1:143757645770219946' (length=21)
          public 'expires' => int 1500648457
          public 'path' => string '/' (length=1)
          public 'domain' => string '.twitter.com' (length=12)
  'filename' => null

أهم ما يميز ذلك هو رمز الوصول الذي يمكن العثور عليه في نص الاستجابة. دعنا نسترجع ذلك الآن باستخدام وظائف وورد بريس سهلة الاستخدام الخاصة بنا. استمرارًا من المثال السابق ، يمكننا الحصول على رمز الوصول باستخدام الكود التالي:

$body = wp_remote_retrieve_body( $response );
$body = json_decode( $body, true );
$access_token = $body['access_token'];
الخطوة 3: استخدم رمز الحامل

الخطوة الأخيرة هي ببساطة استخدام رمز الحامل هذا في جميع استدعاءات API الأخرى. نحن بحاجة إلى إضافة على أنها رأس “التصريح” مع القيمة: Bearer [bearer_token]. لنقم باستدعاء API بسيط يسترد أحدث تغريدات المستخدم باستخدام مسار user_timeline .

$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=danielpataki&count=3';
$args = array(
    'headers' => array(
        'Authorization' => 'Bearer ' . $access_token,
    ),
);

$response = wp_remote_get( $url, $args );
$tweets = json_decode( wp_remote_retrieve_body($response), true )

في نهاية كل ذلك ، $tweetsسيحتوي المتغير على مجموعة من التغريدات. يمكنك استخدام خصائص متنوعة لهذه المصفوفة لعرض التغريدة أو معالجة البيانات.

استنتاج

كما ترى ، فإن استخدام وورد بريس HTTP API للاتصال بالخدمات الخارجية ليس بهذه الصعوبة. تم بناء العديد من واجهات برمجة التطبيقات الحديثة اليوم حول نفس مبادئ REST – بمجرد أن تتعلم أحدها ، ستتمكن من التعود على الآخرين بسرعة كبيرة.

ضع في اعتبارك أنه عندما يطلب منك التوثيق استخدام الجسم ، استخدم الجسم وعندما يستدعي رؤوسًا ، أضف فقط ما يلزم. ثم ، انظر إلى الاستجابة ، وقم بتحويلها إلى مصفوفة ، واحصل على البيانات التي تحتاجها واستخدمها ، الأمر بهذه البساطة.

إذا عمل شخص ما باستخدام واجهة برمجة تطبيقات جيدة أو سيئة بشكل خاص من قبل ، أو لديك بعض النصائح والحيل باستخدام وورد بريس HTTP API ، فأخبرنا بذلك في التعليقات!

وفر الوقت والتكاليف وحقق أقصى قدر من أداء الموقع من خلال:

مساعدة فورية من خبراء استضافة وورد بريس ، 24/7.

تكامل Cloudflare Enterprise.

يصل الجمهور العالمي إلى 28 مركز بيانات حول العالم.

التحسين من خلال مراقبة أداء التطبيقات المضمنة لدينا.

كل ذلك وأكثر من ذلك بكثير ، في خطة واحدة بدون عقود طويلة الأجل ، وعمليات الترحيل المدعومة ، وضمان استرداد الأموال لمدة 30 يومًا. تحقق من خططنا أو تحدث إلى قسم المبيعات للعثور على الخطة المناسبة لك.

توضيح

اي عملية نسخ او اقتباس او ترجمة او نقل تم لاغراض علمية وتدريبية وتعليمية بحته وقد تم انشاء هذا المحتوى بمعرفة خبراء في مجال التقنية اما عن طريق إنشاء او تحرير او نقل او نسخ او اقتباس او ترجمة المحتوى من مصادر خاصة او عامة وكل ذلك ضمن حقوق النشر المتعارف عليها.

اي أخطاء تظهر في المحتوى مهما كان نوعه او تصنيفه يمكنك تحرير رسالة فورية لادارة موثوق لاجل تصحيح هذه الاخطاء، وسنكون شاكرين لك في حال قمت بالتعاون معنا لاجل اصلاح هذه الاخطاء.

أرسل تصحيح

شاركنا رايك وتقييمك للموضوع

{{ reviewsTotal }}{{ options.labels.singularReviewCountLabel }}
{{ reviewsTotal }}{{ options.labels.pluralReviewCountLabel }}
{{ options.labels.newReviewButton }}
{{ userData.canReview.message }}