今回は、課題二に取り組みました。自動投稿されるもののエラーが起きる。IDが一つしか取得できておらず、取得、表示される動画が常に同じ。という二つの問題点があります。 ↓動画情報取得↓
<?php /* Plugin Name: autoposts Plugin URI: http://test.test/ Description: post を自動投稿する Author: test Version: 1.0 Author URI: http://test.test/ */ $word = "コーヒー"; $yt_apiKey = "{APIkey}"; $apiAdress = "https://www.googleapis.com/youtube/v3/search?part=snippet&q="; $maxItem = 10; $type = "video"; $next = "CAUQAA"; $adress = $apiAdress . $word . "&key=". $yt_apiKey . "&maxResults=" . $maxItem; function cuGet_contents( $url, $timeout = 15 ){ $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_HEADER, false ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout ); $result = curl_exec( $ch ); curl_close( $ch ); return $result; } $json = cuGet_contents($adress); $getData = json_decode( $json , true); if ($getData['pageinfo']['totalResults' === 0]){ echo "video was not found in Youtube"; } else { foreach($getData['items'] as $yte){ $title =$yte['snippet']['title']; $videoId =$yte['id']['videoId']; $thumbnail = $yte['snippet']['thumbnails']['medium']['url']; $videoHref = "http://www.youtube.com/watch?v=" . $videoId; $dat_s[] = [ "ID" => $videoId, "nail" => $vthumbnail, "ID" => $videoHref, "ID" => $title ]; } }
↓記事自動投稿↓
// 投稿オブジェクトを作成 $my_post = array( 'post_title' => 'My post', 'post_content' => 'This is my post.' . '<iframe width="600" height="338" src="https://www.youtube.com/embed/' . $videoId. '" frameborder="0" allowfullscreen></iframe>', 'post_status' => 'publish', 'post_author' => 1, 'post_category' => array(8,39) ); // 投稿をデータベースへ追加 wp_insert_post( $my_post );
このプラグインで自動投稿、youtube自動取得埋め込みが可能。 ただ、この記述だと、動画IDが一つしか取れず、常に同じ動画が取得され、表示されてしまう。また、自動投稿できるものの、すぐにエラーとなる。