本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
レトロゲームサイト構築
生成AIの学習がてら、webサイトゲームを作っています。
学習の記録としてゲームも公開していくので、その準備として、wordpressへの公開準備をしているところです。作成しているゲームはこんな感じです。

ゲームの管理:『カスタム投稿タイプ』
『ゲーム』という専用の投稿タイプを新設
子テーマのfunctions.phpにカスタム投稿タイプとタクソノミーを登録
function create_game_post_type() {
// カスタム投稿タイプ「ゲーム」を登録
register_post_type('game',
array(
'labels' => array(
'name' => __('ゲーム'),
'singular_name' => __('ゲーム')
),
'public' => true,
'has_archive' => true, // 一覧ページを有効化
'supports' => array('title', 'editor', 'thumbnail'), // タイトル、本文、アイキャッチ画像を利用
'menu_icon' => 'dashicons-games', // 管理画面のアイコン
'rewrite' => array('slug' => 'games'), // URLのスラッグ
)
);
// ゲーム用のカスタムタクソノミー「ジャンル」を登録
register_taxonomy(
'genre', // タクソノミー名
'game', // ゲーム投稿タイプに紐付け
array(
'label' => 'ジャンル',
'hierarchical' => true, // カテゴリー形式(階層あり)
'public' => true,
'show_ui' => true,
'show_in_rest' => true, // Gutenbergエディタで利用可能に
)
);
}
add_action('init', 'create_game_post_type');
すると、メニューの中にゲームが現れる

ゲーム一覧ページ(ポータル)のテンプレート作成
子テーマフォルダの中に
archive-game.php という新規ファイルを作成しテンプレート化
<?php get_header(); ?>
<div class="container">
<header class="page-header">
<h1>レトロゲームコーナー</h1>
</header>
<div class="game-list">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<article class="game-item">
<a href="<?php the_permalink(); ?>">
<?php if (has_post_thumbnail()) : ?>
<?php the_post_thumbnail('medium'); // アイキャッチ画像を表示 ?>
<?php endif; ?>
<h2><?php the_title(); ?></h2>
</a>
</article>
<?php endwhile; endif; ?>
</div>
</div>
<?php get_footer(); ?>
ゲーム一覧ページ(ポータル)のテンプレート作成
子テーマフォルダに single-game.php という名前で新規ファイルを作成します。これがゲームのメインページになります。
<?php get_header(); ?>
<div class="container">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<article class="game-content">
<header class="game-header">
<h1><?php the_title(); ?></h1>
</header>
<!-- ゲーム本体の埋め込み -->
<div class="game-container">
<?php
// ACFプラグインで作成した 'game_url' フィールドからURLを取得
$game_url = get_field('game_url');
if ($game_url):
?>
<iframe src="<?php echo esc_url($game_url); ?>"></iframe>
<?php else: ?>
<p>ゲームを読み込めません。</p>
<?php endif; ?>
</div>
<!-- ゲーム情報(遊び方など) -->
<div class="game-info">
<h2>遊び方</h2>
<?php the_content(); // WordPressの本文部分を表示 ?>
</div>
<!-- SNSシェアボタン -->
<div class="game-share">
<h2>このゲームをシェアする</h2>
<a href="https://twitter.com/share?url=<?php the_permalink(); ?>&text=<?php the_title(); ?>で遊んだよ!" target="_blank">Xでシェア</a>
<!-- 他のSNSボタンも同様に追加 -->
</div>
<!-- ランキング表示エリア -->
<div id="ranking-area">
<h2>ランキング</h2>
<!-- ランキングはJavaScriptでここに表示されます -->
</div>
</article>
<?php endwhile; endif; ?>
</div>
<?php get_footer(); ?>
プラグインのインストール
Game URLを入力するためにAdvanced Custom Fiels プラグインをインストールします。

ACFからフィールドグループを作成 新規追加ボタンを押します

フィールドグループ名 ゲーム設定
ラベル ゲームURL
フィールド名 game_url → sigle-game.php コードと連携する
フィールドタイプ URL

ロケーションルール 投稿タイプ 等しい ゲーム とします。

変更を保存します。
ゲームを追加する
ゲームの横、投稿を追加

ゲームタイトルと、説明を入れます

ACFで設定したゲームURLが出てくるので、ここに配置したゲームURLを入れます。

ゲームへアクセス!
アクセスできるURLはこのようになりました。
生成AIを使ったレトロゲームたくさん作ってみようと思います。



