Google Feed API 停止にともなう対策【php版】
2015/12/2、突然Google Feed APIがエラーをかえすようになりました。
403:This API is no longer available
Google Feed APIエラーにまつわる情報をまとめたサイト
静的htmlのトップページに別ディレクトリのwordpressの特定のカテゴリーの記事タイトルを5件分「Google Feed API」利用して表示していました。
それが突然何も表示されなくなりました。。。
複数のサイトで利用していたので早速対策をしなければということで、「php」を利用してエラーの起こる前の状態に復旧メモ。
さくらインターネットを利用しているサイトでの対策方法
準備
.htaccessを設置する
1 2 |
Action myphp-script /php.cgi AddHandler myphp-script .php .html |
上記内容の.htaccessをindex.htmlと同じ階層に入れます。
php.cgiを設置する
1 2 |
#!/bin/sh exec /usr/local/bin/php-cgi |
上記内容のphp.cgiをindex.htmlと同じ階層に入れ、ファイルのパーミッションを755に設定します。
htmlファイルでphpが動くようにする
index.htmlにWordPressのタグを読み込めるようにします。
1 |
<?php require('./wordpressのあるフォルダ/wp-load.php'); ?> |
上記タグをindex.htmlの一番先頭(一行目)に記述します。index.htmlの文字コードはUTF-8(shift_jisだと文字化け)。
index.htmlの記事タイトルを表示させたい場所に記述
index.htmlにWordPressのタグを読み込めるようにします。
1 2 3 4 5 6 7 8 9 |
<dl><?php $posts = get_posts("numberposts=5&category=12&orderby=post_date&offset=0"); foreach ($posts as $post): setup_postdata($post); ?> <dt><?php the_time('Y/m/d'); ?></dt> <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd> <?php endforeach; ?> </dl> |
お手本コード。上記タグをindex.htmlの記事タイトルを表示させたい場所に記述します。「numberposts=5&category=12」は「最新記事を5件分、カテゴリー番号12の記事」てな意味だそうです。
以降は上記コードを書き足したり削ったり、CSSで整形したりして完了!
追記:2015/12/4 無事復活したそうです。今さらw
そもそも、google feed api を利用時は「ワードプレスに記事を追加→トップページのニュース欄に記事タイトル反映」までにgoogleのサーバーを経由するためタイムラグ(2〜3時間)がありました。今回のPHP化で「記事追加→タイトル反映」が直になり即反映となったので、このままPHP仕様のままでいきたいと思います。