<?php
/*
* This file is part of EC-CUBE, Addition by INSPIRATION
*
*/
//namespace Eccube\Controller\Block;
namespace Customize\Controller\Block;
use Eccube\Controller\AbstractController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class WordpressHomeController extends AbstractController
{
/**
* WordpressHomeController constructor.
*/
public function __construct(
) {
}
/**
* @Route("/block/wordpress_home", name="block_wordpress_home")
* @Template("Block/wordpress_home.twig")
*/
public function index(Request $request)
{
// WordPressの記事取得
$articleDataList = $this->getWordPressList( 5 );
return [
'ArticleDataList' => $articleDataList,
];
}
/**
* WordPress記事の読み込み
*/
function getWordPressList( $number )
{
$article_data = array();
// WordPressのREST APIエンドポイントURL
$api_url = "https://insp.sixcore.jp/blog/wp-json/wp/v2/posts?per_page=" . $number;
// cURLセッションを初期化
$ch = curl_init();
// cURLのオプションを設定
curl_setopt( $ch, CURLOPT_URL, $api_url ); // URLを設定
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); // 出力結果を文字列として返す
curl_setopt( $ch, CURLOPT_TIMEOUT, 10 ); // タイムアウトを設定 (秒)
// 必要に応じてヘッダーを設定(例: APIキーが必要な場合)
// curl_setopt($ch, CURLOPT_HTTPHEADER, [
// 'Authorization: Bearer YOUR_API_KEY_HERE',
// ]);
// リクエストを実行
$response = curl_exec( $ch );
// エラーチェック
if( curl_errno( $ch ) ) {
//echo "cURLエラー: " . curl_error( $ch );
}
else {
// HTTPステータスコードを取得
$http_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
if( $http_code === 200 ) {
// JSONデコードしてデータを扱う
$data = json_decode( $response, true );
$keys = 0;
foreach( $data AS $post ) {
$article_data[$keys]['date'] = $post['date'];
$article_data[$keys]['title'] = $post['title']['rendered'];
$article_data[$keys]['link'] = $post['link'];
$article_data[$keys]['content'] = $post['content']['rendered'];
$keys++;
}
}
else {
//echo "エラー: HTTPステータスコード $http_code\n";
}
}
// cURLセッションを閉じる
curl_close( $ch );
return $article_data;
}
}