Intereting Posts
Одна картинка, принадлежащая разным галереям? Как удалить некоторые параметры экрана и мета-ящики из добавления / редактирования типа сообщения? как удаленно проверять имя пользователя и пароль из плагина Как проверить, выполняется ли короткий код в виджетах или сообщениях Программно установить имя меню в виджет боковой панели Добавить поле для загрузки файла Удалить верхнюю панель администратора Добавление флажка в настройку темы Как получить все таксономии почтового типа? Какой хороший импортер RSS? Форма не вставляет данные в базу данных с помощью плагина ajax Добавление элементов html в wp nav menu Что делать, если сообщения WordPress на новом сервере возвращают ошибку 404 Отображение имени запрашиваемой таксономии на странице архива терминов? Настройка 1 темы для нескольких блогов в многопользовательской настройке

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; } 

Solutions Collecting From Web of "Twitter feed – Не удалось открыть поток"

Как выполнять удаленные запросы в 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 ) ); } 

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

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

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