✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Удаленные запросы с wp_remote_get

36

Если вы читали какие-либо из моих предыдущих сообщений о получении удаленных файлов, то вы знаете, что старые привычки умирают с трудом, поскольку я часто использую file_get_contentsфайлы wp_remote_get.

Поэтому, как и при ведении блога, я подумал, что было бы полезно поделиться простым примером того, как использовать wp_remote_getего в повседневной работе.

Пост ниже — это просто фрагмент того, как его использовать. То есть он не покажет, как спроектировать, скажем, класс вокруг него или пользовательский интерфейс, позволяющий пользователям загружать файл. Но этого должно быть достаточно, чтобы начать работу.

И я расскажу, как использовать документацию по API и понять, как использовать ее при использовании такой функции.

Зачем использовать wp_remote_get?

Хотя я не всегда использую WordPress API (что обычно происходит из-за старых привычек или из-за того, что я не знаю о какой-либо функции), я стараюсь.

И я твердо верю, что если вы работаете в конкретной среде приложения, и это приложение предоставляет API для чего-то, то вы должны его использовать.

Как читать документы

Если вы знакомы с тем, как использовать документацию, вы можете пропустить этот раздел.

С учетом сказанного, вот что wp_remote_getговорится в документации:

Получите необработанный ответ на HTTP-запрос с помощью метода GET. Результаты включают заголовки и содержимое HTTP.

Вы можете прочитать больше на этой странице в Кодексе и на этой странице в Ресурсах для разработчиков. Но прежде чем использовать функцию, важно понять, что она принимает и что возвращает.

И функция принимает два параметра:

  1. URL-адрес, на который делается запрос,
  2. набор аргументов, необходимых для запроса (что выходит за рамки этого поста).

И wp_remote_get возвращает смешанные результаты в зависимости от результата запроса. Согласно ресурсам для разработчиков:

(WP_Error|массив) Ответ или WP_Error при сбое.

На данный момент мы знаем, что делает функция, что она принимает и что возвращает. Итак, у нас достаточно, чтобы продолжить настройку простого примера.

Использование wp_remote_get

Имея все вышеперечисленное, вот простой пример того, как получить файл с заданного URL-адреса. Я предполагаю, что URL-адрес находится на вашем локальном сервере (потому что я не хочу вдаваться в запрос информации с других серверов в этом посте), поэтому домен используется как TLD для dot-local.

Комментарии должны объяснить, что случилось, но после этого я предложу еще несколько мыслей.

<?php

$file = wp_remote_get( 'https://example.local/file.png' );
if (! isset( $file['headers'])) {

  /*
   * TODO: You may want to return early here, display an error,
   * or provide messaging to the user.
   */
}

if (is_wp_error( $file)) {

  /*
   * TODO: Display an error message to the user that the file they
   * requested was not successfully retrieved.
   */
}

/* 
 * Get the base directory where we'll store the file. This will just be 
 * wp-content/uploads.
 */
$upload_dir   = wp_upload_dir();
$upload_dir = trailingslashit( $upload_dir['basedir'] );

/*
 * Give the file a name that we'll use to write to disk. And
 * build the path to the file including the directory and file name.
 */
$uploaded_filename = 'uploaded.png';
$file_path         = $upload_dir. $uploaded_filename;

/*
 * Open a resource for writing the file, write the data, and then close
 * the resource.
 */
$resource = fopen( $file_path, 'w' );
fwrite( $resource, $file['body'] );
fclose( $resource );

Обратите внимание на следующие важные моменты:

  1. Проверьте заголовки, чтобы убедиться, что они установлены. Если нет, то нет необходимости продолжать захват тела файла.
  2. Если есть ошибка, то нам нужно изящно ее обработать.
  3. Если все остальное в порядке, то мы готовы записать файл на диск. Для этого я использую файловые функции PHP. Это немного выходит за рамки поста, но должно быть легко понять, если вы изучите ссылки ниже.

В конечном счете, использование wp_remote_getдает вам множество функциональных возможностей, заключенных в простую в использовании функцию.

Некоторые ресурсы PHP

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее