概要
index.phpとは
- 例えば[投稿]を表示するときはsingle.phpが使われる。
- しかし[投稿]を表示するときsingle.phpがなかったら…?
- こんなときにindex.phpが使われる✅
💡
表示するテンプレートファイルがないとき代理で使われる!
関連記事
📄WordPress開発初心者必見!テンプレートファイルとは何かを解説
⚠️
トップページを表すためのテンプレートファイルではない
準備
作成手順
以下の手順で作成する。
①ファイルの作成
- 「index.php」という空のファイルを作成する。
💡
保存場所はテーマディレクトリの直下。
wordpressフォルダ/wp-content/themes/TestTheme
②画像の用意(必要な場合のみ)
- 使用する画像をテーマディレクトリ内に用意しておく。
- 分かりやすいようにテーマディレクトリの直下に「img」ディレクトリを作成し、その中に保存しておくといい。
💡
投稿で使われる「wp-content/uploads」とは違うディレクトリなので注意!
「img」にはサイト全体で使う画像を入れておく✅
「img」にはサイト全体で使う画像を入れておく✅
③ファイルの中身を記述
- 「index.php」の中身は空っぽでもOK!
- index.phpはテンプレートファイルがないとき(想定外のとき)に使われるファイル。
- 通常はindex.phpの出番はないため、中身は空っぽでもOK✅
- ただし念の為[トップページ]を表示する内容を書いておくと安心!
- 想定外のときに画面が真っ白になるのは抵抗がある…
- という人はとりあえず[トップページ]と同じ内容を書いておけばOK✅
【補足】中身の概要
index.php
// ヘッダーを読み込む
<?php get_header(); ?>
// ここにindex.phpのコンテンツを記述する
// サイドバーを読み込む(任意)
<?php get_sidebar(); ?>
// フッターを読み込む
<?php get_footer(); ?>
- header.php、footer.php、sidebar.php(任意)を読み込む
- index.phpのコンテンツを書く
イメージ(例:最近の[投稿]を表示する)
例
WordPress化する前のHTML
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<p>------------------------------------------------------------</p>
<p>これはヘッダーです</p>
<p>------------------------------------------------------------</p>
👆ここまでヘッダー(header.php)
<main>
<h1>テスト投稿02</h1>
<p>WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。Word […]</p>
<p><a href="http://localhost/wp-test/category/uncategorized/" rel="category tag">未分類</a></p>
<h1>テスト投稿01</h1>
<p>WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。Word […]</p>
<p><a href="http://localhost/wp-test/category/uncategorized/" rel="category tag">未分類</a></p>
<h1>テスト投稿00</h1>
<p>WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。Word […]</p>
<p><a href="http://localhost/wp-test/category/uncategorized/" rel="category tag">未分類</a></p>
</main>
👇ここからフッター(footer.php)
<p>------------------------------------------------------------</p>
<p>これはフッターです</p>
<p>------------------------------------------------------------</p>
</body>
</html>
WordPress化した後のPHP
👇ヘッダー(header.php)を読み込む
<?php get_header(); ?>
<main>
👇メインループ(必ず書く決り文句)
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
👇記事のタイトル
<h1><?php the_title(); ?></h1>
👇記事の抜粋文
<?php the_excerpt(); ?>
<?php endwhile; endif; ?>
</main>
👇フッター(footer.php)を読み込む
<?php get_footer(); ?>
具体例
実用的なindex.php
先ほどの例でも最低限の内容は表示できているが、より多くのデータを表示することができる✅
イメージ
index.php
<?php get_header(); ?>
<div id="container" class="wrapper">
<main>
<div class="row">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php
// カテゴリー名を取得
$cat = get_the_category();
$catname = $cat[0]->cat_name;
?>
<div class="col-md-6 col-lg-4 mb-4">
<div class="card mb-5">
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('medium', array('class' => 'card-img-top')); ?></a>
<div class="card-body">
<h2 class="card-title"><a href="<?php the_permalink(); ?>"><?php the_title() ?></a></h2>
<ul class="list-inline meta">
<li class="list-inline-item"><i class="far fa-calendar-alt"></i><?php the_time('Y/m/d'); ?></li>
<li class="list-inline-item"><i class="fas fa-folder"></i><?php echo $catname; ?></li>
</ul>
<p class="card-text">
<?php
// 本文が80文字以上なら「…」で省略
if (mb_strlen(strip_tags(get_the_content()), 'UTF-8') > 80) {
$content = mb_substr(strip_tags(get_the_content()), 0, 80, 'UTF-8');
echo $content . '…';
} else {
echo strip_tags(get_the_content());
}
?>
</p>
<a href="<?php the_permalink(); ?>" class="btn btn-primary">Read More</a>
</div>
</div>
</div>
<?php endwhile; endif; ?>
</div>
</main>
</div>
<?php get_footer(); ?>
💡
💡
WordPress用の関数を使うと、[最近の投稿]の情報を自由に表示できる!