[_s] page.phpと404.php

前回からの続きです。

page.php

個別ページを表示するpage.phpを見てみます。

<?php
/**
 * 個別ページを表示するテンプレート
 * The template for displaying all pages
 */
 //ヘッダーを表示する。
 get_header();
?>
	<div id="primary" class="content-area">
		<main id="main" class="site-main">
      //メインループ開始
		<?php
		while ( have_posts() ) :
			the_post();
      // content-page.phpを読み込む。
			get_template_part( 'template-parts/content', 'page' );
      //必要な場合はコメント表示
			// If comments are open or we have at least one comment, load up the comment template.
			if ( comments_open() || get_comments_number() ) :
				comments_template();
			endif;
		endwhile; // End of the loop.
		?>
		</main><!-- #main -->
	</div><!-- #primary -->
<?php
get_sidebar();
get_footer();

single.phpとほぼ同じ内容です。get_template_partで読み込むファイルがcontent-page.phpになっている点、また投稿ではないため時系列が必要ないので、前後の投稿を表示するthe_post_navigationがない点のみ異なります。

404.php

404ページを表示する404.phpを見ていきます。

<?php
/**
 * 404ページのテンプレート
 * The template for displaying 404 pages (not found)
 * @package _s
 */
get_header();
?>
	<div id="primary" class="content-area">
		<main id="main" class="site-main">
			<section class="error-404 not-found">
				<header class="page-header">
					<h1 class="page-title">
						<?php
						// esc_html_e()は、第一引数を翻訳してエスケープして出力する関数。第2引数は翻訳ファイルの指定のために用いる。
						esc_html_e( 'Oops! That page can’t be found.', '_s' );
						?>
					</h1>
				</header><!-- .page-header -->
				<div class="page-content">
					<p><?php esc_html_e( 'It looks like nothing was found at this location. Maybe try one of the links below or a search?', '_s' ); ?></p>
					<?php
					//検索フォームを呼び出す関数。
					get_search_form();
					//the_widget()はwidgetを呼び出す関数。ここでの引数は再帰のの投稿を表示する。
					the_widget( 'WP_Widget_Recent_Posts' );
					?>
					<div class="widget widget_categories">
						<h2 class="widget-title"><?php esc_html_e( 'Most Used Categories', '_s' ); ?></h2>
						<ul>
							<?php
							//wp_list_categories()はリンク付きのカテゴリーリストを表示する。引数は配列で、ここでは、「'orderby'=>'count'カテゴリー投稿数の順番で、'order'=>'DESC'降順で、'show_count'=>1 カテゴリーに投稿数を表示して、'title_li'=>''リストの外側に表示されるタイトルを非表示にして、'number'=>10 表示するカテゴリーの上限を10にする」という意味です。
							wp_list_categories( array(
								'orderby'    => 'count',
								'order'      => 'DESC',
								'show_count' => 1,
								'title_li'   => '',
								'number'     => 10,
							) );
							?>
						</ul>
					</div><!-- .widget -->
					<?php
					/* translators: %1$s: smiley */
					//convert_smilies() 顔文字をimageタグに変換して返す。esc_html__() 第一引数を翻訳してエスケープする。sprintfで2つをつなげて、さらに<p>タグで囲んで代入する。
					//つまり、$_s_archive_content = <p>Try looking in the monthly archives. 🙂</p>
					$_s_archive_content = '<p>' . sprintf( esc_html__( 'Try looking in the monthly archives. %1$s', '_s' ), convert_smilies( ':)' ) ) . '</p>';
					//the_widget() 第二引数でドロップダウンリストで表示するよう指定して、第三引数は、見出しの後ろに出力するテキスト。
					the_widget( 'WP_Widget_Archives', 'dropdown=1', "after_title=</h2>$_s_archive_content" );
					the_widget( 'WP_Widget_Tag_Cloud' );
					?>
				</div><!-- .page-content -->
			</section><!-- .error-404 -->
		</main><!-- #main -->
	</div><!-- #primary -->
<?php
get_footer();

404.phpにはget_sidebar()がありません。single.php、page.phpと比べるとだいぶ長いですが、WordPress Codexで関数を調べれば特に難しいところはないと思います。

次回に続きます。