app/Customize/Controller/Block/WordpressHomeController.php line 29

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE, Addition by INSPIRATION
  4.  *
  5.  */
  6. //namespace Eccube\Controller\Block;
  7. namespace Customize\Controller\Block;
  8. use Eccube\Controller\AbstractController;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class WordpressHomeController extends AbstractController
  13. {
  14.     /**
  15.      * WordpressHomeController constructor.
  16.      */
  17.     public function __construct(
  18.     ) {
  19.     }
  20.     /**
  21.      * @Route("/block/wordpress_home", name="block_wordpress_home")
  22.      * @Template("Block/wordpress_home.twig")
  23.      */
  24.     public function index(Request $request)
  25.     {
  26.         // WordPressの記事取得
  27.         $articleDataList $this->getWordPressList);
  28.         return [
  29.             'ArticleDataList' => $articleDataList,
  30.         ];
  31.     }
  32.     /**
  33.      * WordPress記事の読み込み
  34.      */
  35.     function getWordPressList$number )
  36.     {
  37.         $article_data = array();
  38.         // WordPressのREST APIエンドポイントURL
  39.         $api_url "https://insp.sixcore.jp/blog/wp-json/wp/v2/posts?per_page=" $number;
  40.         // cURLセッションを初期化
  41.         $ch curl_init();
  42.         // cURLのオプションを設定
  43.         curl_setopt$chCURLOPT_URL$api_url );         // URLを設定
  44.         curl_setopt$chCURLOPT_RETURNTRANSFERtrue ); // 出力結果を文字列として返す
  45.         curl_setopt$chCURLOPT_TIMEOUT10 );          // タイムアウトを設定 (秒)
  46.         // 必要に応じてヘッダーを設定(例: APIキーが必要な場合)
  47.         // curl_setopt($ch, CURLOPT_HTTPHEADER, [
  48.         //     'Authorization: Bearer YOUR_API_KEY_HERE',
  49.         // ]);
  50.         // リクエストを実行
  51.         $response curl_exec$ch );
  52.         // エラーチェック
  53.         if( curl_errno$ch ) ) {
  54.             //echo "cURLエラー: " . curl_error( $ch );
  55.         }
  56.         else {
  57.             // HTTPステータスコードを取得
  58.             $http_code curl_getinfo$chCURLINFO_HTTP_CODE );
  59.             if( $http_code === 200 ) {
  60.                 // JSONデコードしてデータを扱う
  61.                 $data json_decode$responsetrue );
  62.                 $keys 0;
  63.                 foreach( $data AS $post ) {
  64.                     $article_data[$keys]['date'] = $post['date'];
  65.                     $article_data[$keys]['title'] = $post['title']['rendered'];
  66.                     $article_data[$keys]['link'] = $post['link'];
  67.                     $article_data[$keys]['content'] = $post['content']['rendered'];
  68.                     $keys++;
  69.                 }
  70.             }
  71.             else {
  72.                 //echo "エラー: HTTPステータスコード $http_code\n";
  73.             }
  74.         }
  75.         // cURLセッションを閉じる
  76.         curl_close$ch );
  77.         return $article_data;
  78.     }
  79. }