использование wp_remote_get вместо file_get_contents [дубликат]

выполнили мою тему через плагин средства проверки Темы, и это кажется нарушенным об использовании file_get_contents получить json URL. Я нашел сообщения, говоря, что я должен использовать wp_remote_get. Я в настоящее время декодирую URL со следующим:

$url = 'url' . $var;
$json =   file_get_contents($url,0,null,null);
$output = json_decode($json,true); 

Сообщение, которое я получаю от Средства проверки Темы:

ПРЕДУПРЕЖДЕНИЕ: file_get_contents был найден в file.php возможных операциях файла.

Это просто говорит это, потому что существует функция, которую я мог возможно использовать Wordpress или какими-либо другими причинами? Также, как я использовал бы wp_remote_get. Я попробовал несколько изменений, главным образом заменив file_get_contents с wp_remote_get без удачи. Кажется, не декодирует URL вообще.

8
14.01.2020, 13:44
3 ответа

Если необходимо отправить ответ JSON, то существует ряд функций для этого. В случае, если Вам нужно это для обратного вызова Ajax:

Наконец было бы что-то как этот:

$request  = wp_remote_get( 'http://example.com' );
$response = wp_remote_retrieve_body( $request );
if ( 
    'OK' !== wp_remote_retrieve_response_message( $response )
    OR 200 !== wp_remote_retrieve_response_code( $response )
)
    wp_send_json_error( $response );

wp_send_json_success( $response );

Оба wp_send_json_success/_error() функции являются обертками для wp_send_json(), который включает wp_die() в конце. Таким образом, нет ничего иного, чтобы сделать.

Следует иметь в виду, что 99% всех удаленных API отправляют 200/OK в случае ошибок. Необходимо будет все еще вручную осмотреть результат и проверить ошибки.

8
19.02.2020, 22:02

Используйте wp_remote_get () в сочетании с wp_remote_retrieve_body ()

Пример

<?php
$request = wp_remote_get('http://example.com');
$response = wp_remote_retrieve_body( $request );
echo $response;
?>

Проверьте документацию на возможный arguements

6
19.02.2020, 22:02
  • 1
    Привет, спасибо, я, кажется, могу повторить все это, но когда я просто пытаюсь получить некоторые определенные значения в json файле, позволяет, говорят, что $response ['companyname'] я Просто добираюсь '{' –  David 03.10.2013, 14:03
  • 2
    , Если тело документа является также json файлом затем, использует json_encode() –  Horttcore 08.10.2013, 16:07

Можно использовать wp_remote_get() следующим образом:

$url = 'url' . $var;
$request =   wp_remote_get($url);
// Get the body of the response
$response = wp_remote_retrieve_body( $request );
// Decode the json
$output = json_decode( $response ); 

$output теперь имеет то, что Вы хотите, и теперь можно идти вперед и сделать материал.

Существует также ряд учебных руководств на wp_remote_get(). Пройдите его, это определенно поможет.

Ссылка - учебное руководство

Надежда это помогает.

1
19.02.2020, 22:02

Теги

Похожие вопросы