私は「VARS」というロックバンドのメンバーで、「VARS」のWebサイトの管理もしています。
Xのポストをトップページに表示していますが、毎回ポストするたびに埋め込みコードを取得して貼り付けていました。
それが、「面倒だな~」と思っていたので、XのAPIを使おうと思っていたので、APIを登録してみました。
XのAPI無料版はポストの取得は出来ないらしいので、「どうしようかな~?」と思っていましたが、「あれ?埋め込み用のAPIはないのかな?」と思ったら、ありました!!
https://developer.x.com/en/docs/twitter-for-websites/oembed-api
APIでポストの埋め込みコードを取得して、データベースに登録し、それをWebサイトのトップページに表示させます。
これで、半自動でWebサイトにXのポストを表示できるようになりました!
投稿者「みか」自己紹介
- パソコンとデータベースが大好き
- 自社でネットワーク・システム・機器管理、Webサイト構築
- 自社向けのシステムをMicrosoft AccessやPHPで多数構築
- Excelでの作業はVBAを使って効率化
- ロックバンド「VARS」でベース担当
- 「VARS」のWebサイト、ブログも構築
- 「VARS」のライブを観に来てね!https://vasofatum.jp/live/
データベースにテーブル作成
oEmbed APIで取得したポストの埋め込み用コードをデータベースに保存するため、テーブル(dt_x)を作成しました。
テーブル:dt_x
テーブルの中の「kbn」に「VARS」と「MIKA」で登録しておきました。
Xのポストは最新のものだけ登録されていればいいので、「VARS」と「MIKA」の2行だけあればOKです。
テーブルに登録するPHPスクリプト作成
Xの埋め込み用コードをoEmbed APIで取得しデータベースに登録する画面を作ります。
登録ボタンをクリックすると、下記のスクリプトが実行されるようにします。
【touroku.php】
<?php
require_once "../../blog/wp-config.php";
require_once "../../func_db.php";
$vars_db = get_db();
$touroku_ok = '';
if(strpos($_POST['in_x_url'],'?') !== false){
$x_url_tmp = explode('?', $_POST['in_x_url']);
$x_url = $x_url_tmp[0];
}else{
$x_url = $_POST['in_x_url'];
}
$url = "https://publish.twitter.com/oembed?url=".$x_url."&maxwidth=300&lang=ja";
//cURLセッション初期化
$ch = curl_init();
//URL、オプション指定
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//情報取得
$res = curl_exec($ch);
//結果
$x_post = json_decode($res);
//セッションを終了する
curl_close($ch);
if($x_post->author_url == "https://twitter.com/vars_axisent"){
$kbn = 'VARS';
}elseif($x_post->author_url == "https://twitter.com/MikaVasofatum"){
$kbn = 'MIKA';
}
$x_html = $x_post->html;
$sql = "UPDATE dt_x SET x_post = ? WHERE kbn = '{$kbn}'";
$stmt = $vars_db->prepare($sql);
$flag = $stmt->execute(array($x_html));
if ($flag){
$touroku_ok = '登録ok';
}else{
$touroku_ok = '登録失敗';
}
$vars_db = null;
echo $touroku_ok;
2行目:データベースはWordPressと同じものを使っているので、ユーザー、パスワードは「wp-config.php」から読み込みます。
3行目:データベースに接続します。
【func_db.php】
<?php
function get_db(){
$dsn = "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET;
try{
// DB接続
$db = new PDO($dsn, DB_USER, DB_PASSWORD);
}catch (PDOException $e){
echo "Error:".$e->getMessage();
die();
}
return $db;
}
登録してみる
ポストのURLを入れて登録ボタンを押してみました。「登録ok」と表示されました。
データベースを見てみると、登録されています!
VARSのWebサイトにも無事表示されました~(^O^)