PHP WordPress

WordPressでライブ情報をサイドバーに自動で表示する

前回記事『Webサイトでライブ情報をデータベース化して自動表示する-PHP、MySQL』の続きです。

前回記事は、WordPressではないPHPで作ったページに「ライブのお知らせ」を自動で表示する方法を書きました。

今回は、WordPressのブログに「ライブのお知らせ」を自動で表示する方法の覚え書きです。

2024.2.19時点で、以下のバージョンです。

データベース:MySQL5.6
PHP:Version8.0
WordPress:6.4.3
テンプレート:賢威

▼前回記事はこちら▼

ショートコードに登録する

データベースに登録されているライブ情報を取得し、WordPressのショートコードに登録します。

[外観]>[テーマファイルエディター]をクリックします。

[外観]>[テーマファイルエディター]をクリック

[Theme functions]をクリックします。

[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 &yen{$adv} / DAY &yen{$door}<br>ツイキャス配信 &yen{$stream}<br>※別途1ドリンク &yen{$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();
});
Theme functions(functions.php)

サイドバーのウィジェットにショートコードを書く

サイドバーのウィジェットにショートコード[sc_live_info]を書き込みます。

サイドバーウィジェット

これで、ブログのサイドバーに自動でライブのお知らせが表示されるようになりました!

ブログサイドバーにライブ情報

-PHP, WordPress
-, , , ,