概要
WordPressにQiitaの記事一覧を表示する方法
- Qiita APIを使用
- APIへのアクセスを減らすためTransients APIを使用して一時保存する
※事前にQiitaのアクセストークンの発行の取得をする必要があります。
検索部分
/** ----------------------------------
qiita検索
------------------------------------ */
function qiita_search(){
if ( false === ( $qiita_data = get_transient( 'qiita_data' ) ) ) {
$curl = curl_init('https://qiita.com/api/v2/authenticated_user/items');
$option = [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer 【アクセストークン】',
'Content-Type: application/json',
],
];
curl_setopt_array($curl, $option);
$result = curl_exec($curl);
curl_close($curl);
$qiita_data = json_decode($result);
set_transient( 'qiita', $qiita_data, 2 * HOUR_IN_SECONDS );
}
return $qiita_data;
}
if ( false === ( $qiita_data = get_transient( 'qiita_data' ) ) ) {
「qiita_data」の部分はTransients APIで保存するときのユニークな名前ですので「qiita_data」でなく違う名前でもOKです。
「qiita_data」がないもしくは最終保存期間から一定期間をすぎると、APIを取得しにいきます。
set_transient( 'qiita', $qiita_data, 2 * HOUR_IN_SECONDS );
APIで取得したデータをTransients APIに保存します。保存期間の指定をします。
MINUTE_IN_SECONDS = 60 (秒)
HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS (1時間)
DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS (1日)
WEEK_IN_SECONDS = 7 * DAY_IN_SECONDS (1週間)
YEAR_IN_SECONDS = 365 * DAY_IN_SECONDS (1年)
今回は2時間にしています。(2 * HOUR_IN_SECONDS)
頻繁に更新されない情報なのであればもっと伸ばしても良いと思います。
表示部分
<?php $pst = qiita_search(); ?>
<ul>
<?php foreach ( $pst as $key => $item ) : ?>
<li>
<a href="<?php echo $item->url; ?>" target="_blank">
<div>
<h3><?php echo $item->title; ?></h3>
<div><?php echo date('Y年m月d日 | g:i a',strtotime($item->created_at)); ?></div>
<div>❤️ <?php echo $item->likes_count; ?> 📦 <?php echo $item->stocks_count; ?> 👀 <?php echo $item->page_views_count; ?></div>
<div>
<img src="<?php echo $item->user->profile_image_url; ?>" alt="">
@<?php echo $item->user->id; ?>(<?php echo $item->user->name; ?>)
</div>
</div>
</a>
</li>
<?php endforeach; ?>
</ul>
取得できる内容はQiita APIドキュメントを確認ください。
コメントを投稿する