【WordPress】固定用ページのテンプレートを作成する

2023年2月7日

固定用ページに適用するテンプレートを自作して追加しようと思います。

マルチサイトをすれば楽なのですが、サイトが分かれるとそれはそれでやりにくいことが多いので、シングルサイトをマルチサイトであるかのようにします。

今回の目標は、ホームのような固定ページを作成するです。

固定用ページのテンプレートについて

固定ページは以下の画像の赤枠で囲ったところで選択できます。


このテンプレートを作成していこうと思います。

テンプレートファイル(*.php)を作成する

まずテンプレートのファイルを作成します。ホームに類似させたいので「sub_home.php」という名前にします。

ファイルの中身は仮に以下のようにしておきます。

<?php
/*
Template Name: サブホーム(固定ページ)
*/
?>
<h1>サブホームです。</h1>
<?php

if(have_posts()): while(have_posts()): the_post();?>

<h2><?php the_title(); ?></h2>

<?php the_content(); ?>

<?php endwhile; endif; ?>

コメントの「Template Name:」がテンプレート名として表示されるようです。

アップロード

ファイルをサーバーにアップロードします。
ルクセリタスなら「/wp-content/themes/luxeritas/pages」です。

アップロードが完了すると固定ページのテンプレートに出てきました。

思ったより簡単でした。

新規固定ページを作成し、テンプレートを設定してみる。

それでは試しに適当にやってみます。

こんな感じにしてプレビューします。

シンプルですね。今回のテーマである「固定ページのテンプレート作成」についてはここまでです。

ここから好きに改造していきます。改造していくためには画面に表示する材料が必要ですね。
材料集めをしましょう。

テンプレートを作りこむ

こういう場合におすすめなのは、既にできているところから抜き出してくるのがいいです。
ルクセリタスであれば「/wp-content/themes/luxeritas/Page.php」がデフォルトテンプレートです。

全部解析するのは面倒なのでコピーしちゃいましょう。

コピーしたら忘れずアップロードします。

とりあえずこうなったのでホームらしくするために関連記事を消してみます。
関連記事は、記事下のウィジェットでした。サブホームの予定なので関連記事はいりません。記事下ウェジェットをやめます

123行目あたりの以下の行をコメントにします。post-underっていう名前から記事下と予測できます。
こういうこともあるので命名規約って大事ですね。

//if( function_exists('dynamic_sidebar') === true ) {
//	if( isset( $luxe['amp'] ) ) {
//		if( is_active_sidebar('post-under-1-amp') === true ) {
//			$amp_widget = thk_amp_dynamic_sidebar( 'post-under-1-amp' );
//			if( !empty( $amp_widget ) ) echo $amp_widget;
//		}
//	}
//	else {
//		if( is_active_sidebar('post-under-1') === true ) {
//			dynamic_sidebar( 'post-under-1' );
//		}
//	}
//}

アップロードして確かめます。

消えてますね。次は記事の一覧を出してみましょう。

query_posts('post_type=post&paged='.$paged);

?><div><?php 

if(have_posts()): 
	while (have_posts()):
		the_post(); ?>
		<div>
			<h2>
				<a href="<?php the_permalink(); ?>">
					<?php the_title(); ?>
				</a>
			</h2>
			<?php the_excerpt(); ?>
			<p>
				<?php 
				    echo get_the_date();
				    the_time(); 
				    echo("|カテゴリー:");
				    the_category(' , '); 
				?>
			</p>       
		</div><?php
	endwhile; 
endif; 

?></div><?php 

oldwp_reset_query();

固定ページでhave_posts関数を利用する際には、「query_posts」というテンプレートタグを利用しないと一覧表示できないようです。

query_posts() はWordPressが投稿を表示するのに使用しているメインクエリーを置き換える手段です。これはメインクエリーを一旦横に置いておき、新しいクエリーで上書きします。

query_posts を呼び出したあとは、クエリーの改変を戻すために、oldwp_reset_query() を呼び出し、オリジナルのメインクエリーを復活させる必要があります。

https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts

とあるのでoldwp_reset_query関数を最後に呼びます。これを実行すると

いろいろ自分でカスタマイズしてみてください。

さいごに

記事にするとなんともサクッとやっているように見えますが、3時間くらいはTry&Errorの繰り返してます。

技術は、本やネットの情報を得るだけではなく、何度もやってみて失敗して、やっと成功した!この繰り返しで見につくものだと私は思います。

ここまで読んで頂いてありがとうございます。