Intereting Posts
Как ограничить wp генерировать вложенные метаданные () на определенные промежуточные размеры изображения Как связать страницу с тегом привязки в WordPress Ошибка пользовательских прав страницы Как вы можете продемонстрировать премиальные темы клиентам без предварительной покупки темы? save_post action, прежде чем опубликовать / сохранить сообщение Где WordPress регистрирует сценарии по умолчанию, такие как jQuery? Как отобразить категории сообщения? (пользовательский тип сообщения) Добавление разметки в текст столбца на странице администрирования «Редактировать страницы» Включить шаблон главной страницы в шаблон определенной категории. Media Attachment Пользовательские метаполя не сохраняются в Media Uploader при использовании автозаполнения jQuery UI Отключить Sharedaddy в фидах Категории и теги не работают! Я хочу разрешить использование атрибута data-flw в ссылках в комментариях Метод автоматической проверки доставки Загрузка сообщений на внешнюю страницу

Twitter feed – Не удалось открыть поток

Это работает, однако я продолжаю получать неспособность открыть поток каждый так много случайных обновлений / просмотров страниц. Я также пробовал этот код на двух разных хостах с теми же результатами. Я также пытался использовать cURL с теми же результатами. Он продолжает показывать ошибку в файле_get_contents. Есть ли конфликт с wordpress и file_get_contents?

function get_tweets($twitter_username, $tweet_count) { if(($twitter_info = file_get_contents('https://api.twitter.com/1/users/show.json?screen_name=' . $twitter_username)) === FALSE) { return false; } $twitter = array();//store all info in this array if(($profile_info = @json_decode($twitter_info, true)) === FALSE) { return false; } $twitter['name'] = $profile_info['name']; $tweets = array(); if(($tweets_json = file_get_contents('https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name='.$twitter_username.'&count='.$tweet_count))) { if(($all_tweets = @json_decode($tweets_json, true)) === FALSE) { return false; } foreach($all_tweets as $tw) { $tweets[] = array('tweet'=>make_clickable_urls($tw['text']), 'created_at'=> 'about '. time_since(strtotime($tw['created_at'])) . ' ago', 'profile_image_url'=>$twitter['profile_image_url']); } } else { return false; } $twitter['tweets'] = $tweets; return $twitter; } 

Как выполнять удаленные запросы в WordPress: используйте соответствующий API

Во-первых, есть API HTTP HTTP , который должен использоваться для таких задач. Во-вторых, никогда не следует использовать оператор @ , поскольку он подавляет сообщения об ошибках или уведомления и успешно блокирует вас от устранения неполадок с вашими ошибками. Просто потому, что вы не можете видеть это, это не значит, что его там нет.

Как использовать API

Первое, что нужно сделать, это сделать фактический запрос:

 // Example $api_url = https://api.twitter.com/1/users/show.json?screen_name=SOME_USER_NAME'; $response = wp_remote_get( $api_url ); 

Затем вы проверяете, есть ли у вас ошибка и выведите ее для отладки.

 if ( is_wp_error( $response ) ) return $response->get_error_message(); 

Заголовки могут предоставить вам дополнительную информацию. То же самое касается кода ответа и ответного сообщения

 $headers = wp_remote_retrieve_headers( $response ); $code = wp_remote_retrieve_response_code( $response ); $message = wp_remote_retrieve_response_message( $response ); 

Конечно, большая часть кода ответа и сообщения – это ложь и то, что отвечает сервер. Удаленные API-интерфейсы – в моем личном опыте – в основном паршиво закодированы и отправляют ответы 200/OK на ошибки.

Теперь, когда вы все закончили, вы, наконец, просто получаете результат и делаете все, что вам нужно для этого:

 $data = wp_remote_retrieve_body( $response ); // BE FANTASTIC HERE! 

Как отлаживать HTTP-запросы WP

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

 add_action( 'http_api_debug', 'wpse78251_http_api_debug', 10, 5 ); function wpse78251_http_api_debug( $response, $type, $class, $args, $url ) { var_dump( 'Request URL: ' . var_export( $url, true ) ); var_dump( 'Request Args: ' . var_export( $args, true ) ); var_dump( 'Request Response : ' . var_export( $response, true ) ); } 

Более подробную информацию об отладке этих запросов можно найти в этом ответе, который я дал .

Дополнительная информация / Усовершенствованная и подробная информация

Я написал еще один ответ о удаленных запросах на этот вопрос , который также показывает основную концепцию кэширования и анализа ответа.