前回記事『Webサイトでライブ情報をデータベース化して自動表示する-PHP、MySQL』の続きです。
前回記事は、WordPressではないPHPで作ったページに「ライブのお知らせ」を自動で表示する方法を書きました。
今回は、WordPressのブログに「ライブのお知らせ」を自動で表示する方法の覚え書きです。
2024.2.19時点で、以下のバージョンです。
データベース:MySQL5.6
PHP:Version8.0
WordPress:6.4.3
テンプレート:賢威
▼前回記事はこちら▼
ショートコードに登録する
データベースに登録されているライブ情報を取得し、WordPressのショートコードに登録します。
[外観]>[テーマファイルエディター]をクリックします。
[Theme functions]をクリックします。
Theme functions(functions.php)に下記のように書き込みました。
ライブ情報が表示されるようにショートコード[sc_live_info]に割り当てられます。
// ライブ情報
add_shortcode('sc_live_info', function ($kbn) {
global $wpdb;
$today = date("Ymd");
$data = array();
$week = array("日", "月", "火", "水", "木", "金", "土");
$data = $wpdb->get_results("SELECT *
FROM live_sche
LEFT OUTER JOIN m_live_place ON live_sche.live_place_id = m_live_place.live_place_id
WHERE live_sche.live_date >= '$today'");
ob_start();
if(count($data) > 0){
foreach($data as $key => $dt) {
$y = intval(substr($dt->live_date, 0, 4));
$m = intval(substr($dt->live_date, 4, 2));
$d = intval(substr($dt->live_date, 6, 2));
$w = $week[date("w",mktime(0,0,0,$m,$d,$y))];
$adv = number_format($dt->advance);
$door = number_format($dt->at_the_door);
$stream = number_format($dt->stream);
$one_drink = number_format($dt->one_drink);
$img_url = "/live/".$y."/img/".$dt->live_date.".webp";
if($key > 0){
echo "<p class=\"al-c\">----------------</p>";
}
if($kbn[0] == 'side'){
$width_size = "80%";
}else{
$width_size = "50%";
}
echo "<p class=\"al-c\"><span class=\"b big\">{$y}.</span><span class=\"b big2\">{$m}.{$d}</span>({$w})</p>";
echo "<p class=\"al-c\"><a href=\"https://vasofatum.jp/live/\" target=\"_blank\"><span class=\"b big\">『{$dt->live_name}』</span></a><br>{$dt->live_place}</p>";
echo "<p class=\"al-c\">OPEN {$dt->live_open} / START {$dt->live_start}<br>ADV ¥{$adv} / DAY ¥{$door}<br>ツイキャス配信 ¥{$stream}<br>※別途1ドリンク ¥{$one_drink}</p>";
echo "<p style=\"text-align:center;\"><img src=\"https://vasofatum.jp/{$img_url}\" alt=\"{$dt->live_name}\" style=\"width:{$width_size};\"></p>";
}
}else{
echo "<p class=\"al-c m40-t\">ライブは未定です</p>";
}
return ob_get_clean();
});
サイドバーのウィジェットにショートコードを書く
サイドバーのウィジェットにショートコード[sc_live_info]を書き込みます。
これで、ブログのサイドバーに自動でライブのお知らせが表示されるようになりました!