array( 'Accept-language' => 'en', ), 'user-agent' => 'Mozilla/5.0 (iPad; CPU OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari', 'timeout' => 10, ) ); // リクエストが失敗した場合は元のキャッシュを返す if (is_wp_error($oembed_response)) { return $cache; } // HTTPステータスコードが200以外の場合は元のキャッシュを返す $http_code = (int)wp_remote_retrieve_response_code($oembed_response); if ($http_code != 200){ return $cache; } // レスポンスのボディを取得する $data = wp_remote_retrieve_body($oembed_response); // もしYouTubeがJSONを変更したら if (empty($data)) { return $cache; } // \U0001f534 breakes json_decode with big U $data = str_replace("\\U",'\\u', $data); $json = json_decode($data,JSON_UNESCAPED_SLASHES); // ジェイソンが無効な場合 if (empty($json)) { return $cache; } $youtube_cache = array(); $youtube_cache['title'] = htmlentities( $json['title'], ENT_QUOTES, 'UTF-8' ); $youtube_cache['video_id'] = $video_id[0]; $youtube_cache = base64_encode(json_encode($youtube_cache)); //wp core with first parsing inject unknow attr discover. Owerwise md5 is not valid if(isset($attr['discover']) && $attr['discover'] == 1){ unset($attr['discover']); } $cachekey = '_oembed_' . md5( $url . serialize( $attr ) ); // $cache変数のアップデート $cache = str_replace('src', ' data-youtube="'.$youtube_cache.'" src', $cache); // 新しいキャッシュを保存 update_post_meta( get_the_ID(), $cachekey, $cache ); $MATCH_CACHE = $youtube_cache; } $json = json_decode(base64_decode($MATCH_CACHE), true); $youtube = preg_replace("/data-youtube=\"(.+?)\"/", "", $cache); if (preg_match( '{src=[\'"](.+?)[\'"]}i', $youtube, $m)) { $default_args = array('autoplay' => 1); $default_args = apply_filters('youtube_embed_default_args', $default_args); //元のURL情報の取得 $urls = wp_parse_url($url); $query = isset($urls['query']) ? $urls['query'] : ''; parse_str($query, $args); //デフォルトパラメータと結合 $args = array_merge($default_args, $args); //動画IDは不要なので削除 if (isset($args['v'])) { $args['v'] = null; } //srcのURL $youtube_old_url = $m[1]; // var_dump($youtube_old_url); //デフォルトのパラメータ設定 $args = apply_filters('youtube_embed_args', $args); //クエリを追加 $youtube_new_url = add_query_arg($args, $youtube_old_url); // var_dump($youtube_new_url); $youtube = str_replace($youtube_old_url, $youtube_new_url, $youtube); } $youtube = htmlentities($youtube); $thumb_url = "https://i.ytimg.com/vi/{$json['video_id']}/hqdefault.jpg"; $wrap_start = '