WordPressのテーマに使用されるphpファイル(2)

Pocket
LINEで送る


スポンサードリンク



さあ、実際のTwenty Twelveのindex.phpのスクリプトをみてみよう。

当然、ほとんど意味が分からないかもしれないが今は気にすることはない。ざっと目を通してみてくれ。

Twenty Twelve index.php

<!--?php /**  * The main template file.  *  * This is the most generic template file in a WordPress theme  * and one of the two required files for a theme (the other being style.css).  * It is used to display a page when nothing more specific matches a query.  * For example, it puts together the home page when no home.php file exists.  *  * Learn more: http://codex.wordpress.org/Template_Hierarchy  *  * @package WordPress  * @subpackage Twenty_Twelve  * @since Twenty Twelve 1.0  */ get_header(); ?--></pre>
<div class="site-content" id="primary">
<div id="content" role="main"><!--?php if ( have_posts() ) : ?-->

 <!--?php /* Start the Loop */ ?-->
 <!--?php while ( have_posts() ) : the_post(); ?-->
 <!--?php get_template_part( 'content', get_post_format() ); ?-->
 <!--?php endwhile; ?-->

 <!--?php twentytwelve_content_nav( 'nav-below' ); ?-->

 <!--?php else : ?-->
<article class="post no-results not-found" id="post-0"><!--?php if ( current_user_can( 'edit_posts' ) ) : 				// Show a different message to a logged-in user who can add posts. 			?-->
<header class="entry-header">
<h1 class="entry-title"></h1>
</header>
<div class="entry-content"><!--?php printf( __( 'Ready to publish your first post? <a href="%s"-->Get started here.', 'twentytwelve' ), admin_url( 'post-new.php' ) ); ?></div>
<!-- .entry-content -->

 <!--?php else : 				// Show the default message to everyone else. 			?-->
<header class="entry-header">
<h1 class="entry-title"></h1>
</header>
<div class="entry-content">
<!--?php _e( 'Apologies, but no results were found. Perhaps searching will help find a related post.', 'twentytwelve' ); ?-->

 <!--?php get_search_form(); ?--></div>
<!-- .entry-content -->
 <!--?php endif; // end current_user_can() check ?--></article>
<!-- #post-0 -->

 <!--?php endif; // end have_posts() check ?--></div>
<!-- #content --></div>
<pre><!-- #primary -->

<!--?php get_sidebar(); ?-->
<!--?php get_footer(); ?-->

なんとなくでも、headerとかsidebarとかcontentというキーワードから、そこを表示してくれということを決めているのが分かると思う。こうして、index.phpでは、headerとかのパーツごとの.phpファイルを指定してあげるだけにするのが普通だ。ほら、スッキリしているだろう?

※もし意味がよく分からなくなってきている場合は、はじめに、で言ったことを思い出してほしい。PHPはざっくりいうとhtmlを出力する為のプログラムだ。index.phpで、headerとかのパーツごとの.phpファイルを指定してあげることで、何を出力するか決めているということなる。分かるね。

次に、header.phpとsidebar.php、content.phpのスクリプトをそれぞれみてみよう。意味は分からなくてもいい。とりあえずこれだけの量があるんだなと流して見てほしい。

Twenty Twelve header.php

<!--?php <br ?-->/**
 * The Header for our theme.
 *
 * Displays all of the section and everything up till</pre>
<div id="main">*
 * @package WordPress
 * @subpackage Twenty_Twelve
 * @since Twenty Twelve 1.0
 */
?>
<!--[if IE 7]>
<html class="ie ie7" <?php language_attributes(); ?>>
<![endif]-->
<!--[if IE 8]>
<html class="ie ie8" <?php language_attributes(); ?>>
<![endif]-->
<!--[if !(IE 7) | !(IE 8)  ]><!-->
>
<div></div>
<!--<![endif]-->
<div></div>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<meta name="viewport" content="width=device-width" />

 	<link href="http://gmpg.org/xfn/11" rel="profile" /> 	<link href="<?php bloginfo( 'pingback_url' ); ?>" rel="pingback" />

<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->
<div></div>
<div></div>
>
<div class="hfeed site" id="page"><header class="site-header" id="masthead" role="banner"><hgroup>
<h1 class="site-title"></h1>
<h2 class="site-description"></h2>
</hgroup><nav class="main-navigation" id="site-navigation" role="navigation">
<h3 class="menu-toggle"></h3>
 <!--?php wp_nav_menu( array( 'theme_location' =--> 'primary', 'menu_class' => 'nav-menu' ) ); ?></nav>
<!-- #site-navigation -->

 <!--?php $header_image = get_header_image(); 		if ( ! empty( $header_image ) ) : ?-->
 <a href="<?php echo esc_url( home_url( '/' ) ); ?>"><img class="header-image" alt="" src="<?php echo esc_url( $header_image ); ?>" width="<?php echo get_custom_header()->width; ?>" height="<?php echo get_custom_header()->height; ?>" /></a>
 <!--?php endif; ?--></header>
<!-- #masthead -->
<div class="wrapper" id="main">

Twenty Twelve sidebar.php

<!--?php /**  * The sidebar containing the main widget area.  *  * If no active widgets in sidebar, let's hide it completely.  *  * @package WordPress  * @subpackage Twenty_Twelve  * @since Twenty Twelve 1.0  */ ?-->

	<!--?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?--></pre>
<div class="widget-area" id="secondary" role="complementary"></div>
<pre><!-- #secondary -->
	<!--?php endif; ?-->

Twenty Twelve content.php

<!--?php /**  * The default template for displaying content. Used for both single and index/archive/search.  *  * @package WordPress  * @subpackage Twenty_Twelve  * @since Twenty Twelve 1.0  */ ?--></pre>
<article id="post-<?php the_ID(); ?>">>
 <!--?php if ( is_sticky() && is_home() && ! is_paged() ) : ?-->
<div class="featured-post"></div>
 <!--?php endif; ?-->
<header class="entry-header"><!--?php the_post_thumbnail(); ?-->
 <!--?php if ( is_single() ) : ?-->
<h1 class="entry-title"></h1>
 <!--?php else : ?-->
<h1 class="entry-title"></h1>
 <!--?php endif; // is_single() ?-->
 <!--?php if ( comments_open() ) : ?-->
<div class="comments-link"></div>
<!-- .comments-link -->
 <!--?php endif; // comments_open() ?--></header>
<!-- .entry-header -->

 <!--?php if ( is_search() ) : // Only display Excerpts for Search ?-->
<div class="entry-summary"></div>
<!-- .entry-summary -->
 <!--?php else : ?-->
<div class="entry-content"><!--?php the_content( __( 'Continue reading <span class="meta-nav"-->→', 'twentytwelve' ) ); ?>
 <!--?php wp_link_pages( array( 'before' =--> '
<div class="page-links">' . __( 'Pages:', 'twentytwelve' ), 'after' => '</div>
' ) ); ?></div>
<!-- .entry-content -->
 <!--?php endif; ?-->
<footer class="entry-meta"><!--?php twentytwelve_entry_meta(); ?-->
 <!--?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link"-->', '' ); ?>
 <!--?php if ( is_singular() && get_the_author_meta( 'description' ) && is_multi_author() ) : // If a user has filled out their description and this is a multi-author blog, show a bio on their entries. ?-->
<div class="author-info">
<div class="author-avatar"></div>
<!-- .author-avatar -->
<div class="author-description">
<h2></h2>
<!--?php the_author_meta( 'description' ); ?-->
<div class="author-link"><a href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ); ?>" rel="author">
 <!--?php printf( __( 'View all posts by %s <span class="meta-nav"-->→', 'twentytwelve' ), get_the_author() ); ?>
 </a></div>
<!-- .author-link	--></div>
<!-- .author-description --></div>
<!-- .author-info -->
 <!--?php endif; ?--></footer>
<!-- .entry-meta --></article>
<pre><!-- #post -->

これがindex.phpひとつのファイルになったら、面倒なのは想像できるよね?実際には、もっとたくさんのファイルがあるのは上でみた通り。それらを一つのファイルにしてしまったら確実にワケが分からなくなってしまう。

ごちゃごちゃしたソースコードはスパゲッティなんて呼ばれているぞ。食べるスパゲッティはおいしいけど、ソースコードのスパゲッティはもちろん、ネガティブな意味だ。

話を戻そう。

テーマはだいたいの場合、次のようなphpファイルが含まれているぞ。テーマに使われる.phpファイルは「テンプレートファイル」と呼ばれる。これも覚えておこう。

index.php・・・全体
header.php・・・ヘッダ部分
sidebar.php・・・サイドバー部分
footer.php・・・フッター部分
single.php・・・投稿ページ部分
page.php・・・固定ページ部分
archive.php・・・アーカイブ部分
comments.php・・・コメント部分
search.php・・・検索結果部分
searchform.php・・・検索フォーム部分
function.php・・・関数部分
404.php・・・エラーページ部分

なんだかいっぱいあるって?たしかに。じゃあ、いきなり細かく見ていくと大変だから、分かりやすいところからやっていくことにしよう。

スポンサードリンク