見出し画像

【第9回】Wordpress自作テーマを作成練習。コメント欄とコメント投稿の表示

引き続きWordrpressの自作テーマの練習をやっていこうと思います。

このnoteでは下記の書籍を参考に自作テーマを作成しています。

前回の内容はこちらです↓

今回の内容
コメント欄を表示、コメントの投稿できるようにする

やっぱりブログ記事を投稿しているからには不特定多数の方が見てくれるため、コメントをもらうことがあります。

Wordpressでコメント欄を出すためにどのようなコードを書けば良いのかを勉強しました。

コメント欄の表示、コメント投稿を表示

ここで行うことは、
1.コメント欄を表示する
2.コメント投稿を表示する

※コメント欄を作るだけでは、コメントを投稿しても表示させることができません。

1.コメント欄を表示する

まず、「mytheme」の直下に「comments.php」というファイルを作る理科のように記述します。

画像1

comments.php

<?php comment_form('format=html5&title_reply=コメント&label_submit=送信'); ?>

そして「comments.php」を「index.php」で呼び出すための記述を以下で行います。

index.php

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title><?php bloginfo( 'name' ); ?><?php wp_title(); ?></title>

<link href='http://fonts.googleapis.com/css?family=Acme' rel='stylesheet' type='text/css'>

<link href="http://netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.css" rel="stylesheet">

<link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>">

<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>

<header>
<div class="siteinfo">
<div class="container">
<h1><a href="<?php echo home_url(); ?>"><?php bloginfo( 'name' ); ?></a></h1>
<p><?php bloginfo( 'description' ); ?></p>
</div>
</div>
</header>


<div class="container">

<!-- カテゴリーの表示 -->
<?php if(is_category()):?>
<h1 class="archive-title"><i class="fa fa-folder-open"></i>【<?php single_cat_title();?>】に関する記事です。</h1>
<?php endif; ?>
	
<!-- 月別ページの表示 -->
<?php if(is_month()):?>
<h1 class="archive-title"><i class="fa fa-clock-o"></i>【<?php echo get_the_date('Y年n月');?>】に投稿した記事です。</h1>
<?php endif; ?>

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

<article <?php post_class(); ?>>

<?php if( is_single() ): ?>
	<h1><?php the_title(); ?></h1>
<?php else: ?>
	<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<?php endif; ?>

<div class="postinfo">
	<time datetime="<?php echo get_the_date( 'Y-m-d' ) ?>">
	<i class="fa fa-clock-o"></i>
	<?php echo get_the_date(); ?>
	</time>

	<span class="postcat">
	<i class="fa fa-folder-open"></i>
	<?php the_category( ', ' ); ?>
	</span>
</div>

<?php the_content(); ?>


<?php if( is_single() ): ?>
<div class="pagenav">
	<span class="old">
	<?php previous_post_link( 
	'%link', 
	'<i class="fa fa-chevron-circle-left"></i> %title' 
	); ?>
	</span>

	<span class="new">
	<?php next_post_link( 
	'%link', 
	'%title <i class="fa fa-chevron-circle-right"></i>' 
	); ?>
	</span>
</div>
<?php endif; ?>
	
<?php comments_template(); ?>

</article>

<?php endwhile; endif; ?>


<?php if ( $wp_query->max_num_pages > 1 ): ?>
<div class="pagenav">
	<span class="old">
	<?php next_posts_link( '<i class="fa fa-chevron-circle-left"></i> 古い記事' ); ?>
	</span>

	<span class="new">
	<?php previous_posts_link( '新しい記事 <i class="fa fa-chevron-circle-right"></i>' ); ?>
	</span>
</div>
<?php endif; ?>

<div class="blogmenu">
	<ul>
		<?php dynamic_sidebar()?>
	</ul>
</div>

</div> <!-- container -->

<footer>
	<div class="container">
		<small>Copyright &copy; <?php bloginfo( 'name' ); ?></small>
	</div>
</footer>

<?php wp_footer(); ?>
</body>
</html>

追加したのは以下の部分です。

<?php comments_template(); ?>

これで「index.php」から「comments.php」を呼び出すことができました。

では、ホームページを見てみましょう。

画像2

コメント欄ができていますね。

画像3

実際のホームページの「検証」からコードを見ると、formタグができていることがわかります。

まだデザインがあてられていないので不格好ですが、後で「style.css」にデザインの追加を行います。

2.コメント投稿を表示する

投稿されたコメントを表示させるには、「comments.php」に追加する必要があります。

comments.php

<div id="comments">
	<?php if( have_comments() ):?>
		<h3>コメント</h3>
		<ul>
			<?php wp_list_comments( 'avater_size=0&max_depth=1&format=html5' );?>	
		</ul>
	<?php endif; ?>

<?php comment_form('format=html5&title_reply=コメント&label_submit=送信'); ?>
</div>

こんな感じで書きます。

if( have_comments()で「もしコメントがあったら」、

<ul>
    <?php wp_list_comments( 'avater_size=0&max_depth=1&format=html5' );?>	
</ul>

が出力されるようになっています。

これでコメントを投稿されたら、ちゃんと表示してくれます。

画像4

確認できます。

デザインをあてる

デザインが格好悪いんので、「style.css」に追加しましょう。

style.css

@charset "UTF-8";
/*
Theme Name: MY THEME (Chapter 2)
Author: TRAVEL SKETCH
Description: This is my original theme.
Version: 1.0
*/


body	{margin: 0;
	font-family: 'メイリオ', 'Hiragino Kaku Gothic Pro', sans-serif}

.container	{max-width: 650px;
	margin-left: auto;
	margin-right: auto;
	padding-left: 15px;
	padding-right: 15px;
}

/* 記事 */
article	{margin-bottom: 40px;}

article h1	{margin: 0;
	font-size: 32px;
	font-weight: normal}

article h1 a	{color: #000000;
	text-decoration: none}


/* 記事の付加情報 */
.postinfo	{margin-top: 15px;
	font-size: 14px}

.postinfo a	{color: #000000;
	text-decoration: none}

.postinfo .postcat	{margin-left: 20px}

.postinfo i	{color: #888888}


/* 前後の記事へのリンク */
.pagenav a	{padding: 5px 10px;
	border: solid 1px #cccccc;
	border-radius: 10px;
	color: #666666;
	font-size: 12px;
	text-decoration: none}

.pagenav .old a	{float: left}

.pagenav .new a	{float: right}

.pagenav	{overflow: hidden;
	margin-top: 40px;
	margin-bottom: 40px;
	clear:both}


/* ヘッダー */
header	{margin-bottom: 40px;
	background-color: #1e90ff;
	color: #ffffff}

header a	{color: #ffffff;
	text-decoration: none}

.siteinfo	{overflow: hidden;
	padding-top: 14px;
	padding-bottom: 14px}

.siteinfo h1	{
	float: left;
	margin: 0;
	font-family: 'Acme', sans-serif;
	font-size: 20px}

.siteinfo p	{float: right;
	margin: 0;
	margin-top: 5px;
	font-size: 12px}

/* フッター */
footer	{margin-top: 40px;
	padding-top: 14px;
	padding-bottom: 14px;
	background-color: #1e90ff;
	color: #ffffff}

/* 本文中の画像*/
article img{
	border:none;
   max-width: 100%;
   height:auto;
}

.aligncenter{
	display:block;
	margin-top:30px;
	margin-bottom:30px;
	margin-left:auto;
	margin-right:auto;
}

.alignleft{
	float:left;
	margin-bottom:30px;
	margin-right:30px;
}

.alignright{
	float:right;
	margin-bottom:30px;
	margin-left:30px;
}

.blogmenu ul{
	margin:0;
	padding:0;
	list-style:none;
}

.blogmenu .widget{
	margin-bottom:30px;
	padding:20px;
	background-color:#f8f8ff;
}

.blogmenu .widgettitle{
	margin-top:1px;
	margin-bottom:20px;
	border-right:solid 10px #4a5f7e;
	color:#4a5f7e;
	font-size:14px;
}

.blogmenu li a{
	display:block;
	padding:10px 15px;
	color:#666666;
	font-size:14px;
	text-decoration:none;
}
.blogmenu li a:hover{
	background-color:#ffffff;
}
.archive-title{
	margin-top:0;
	margin-bottom:40px;
	background-color: #eeeeee;
	font-size:14px;
	font-weight:normal;
	color:#696969;
}

.archive-title i{
	padding:15px;
	background-color:#4a5f7e;
	color:#ffffff;
}

/* コメント投稿フォーム */
#respond p	{margin-top: 0;
	margin-bottom: 20px;
	font-size: 12px}

#respond label	{font-size: 14px}

#respond input,
#respond textarea	{width: 100%;
	padding: 5px;
	-moz-box-sizing: border-box;
	-webkit-box-sizing: border-box;
	box-sizing: border-box}

#respond input[type="submit"]
	{width: 200px;
	padding: 10px;
	border: none;
	background-color: #4169e1;
	color:#f0f8ff;
	-webkit-appearance: none;
	cursor: pointer}

#respond input[type="submit"]:hover
	{background-color: #ffaa00}

#respond .required	{color: #ff0000}


/* コメント */
#comments footer	{background: none;
	margin: 0;
	color: #000000;
	font-size: 12px}

#comments footer a	{color: #000000}

#comments footer div	{display: inline}

#comments ul	{list-style: none;
	margin: 0;
	padding: 0}

#comments article	{border: dotted 1px #aaaaaa;
	margin-bottom: 10px;
	padding: 10px 20px 20px 20px}

#comments .comment-content	{margin-left: 30px}

追加したのは以下の2点です。


/* コメント投稿フォーム */
#respond p	{margin-top: 0;
	margin-bottom: 20px;
	font-size: 12px}

#respond label	{font-size: 14px}

#respond input,
#respond textarea	{width: 100%;
	padding: 5px;
	-moz-box-sizing: border-box;
	-webkit-box-sizing: border-box;
	box-sizing: border-box}

#respond input[type="submit"]
	{width: 200px;
	padding: 10px;
	border: none;
	background-color: #4169e1;
	color:#f0f8ff;
	-webkit-appearance: none;
	cursor: pointer}

#respond input[type="submit"]:hover
	{background-color: #ffaa00}

#respond .required	{color: #ff0000}

/* コメント */
#comments footer	{background: none;
	margin: 0;
	color: #000000;
	font-size: 12px}

#comments footer a	{color: #000000}

#comments footer div	{display: inline}

#comments ul	{list-style: none;
	margin: 0;
	padding: 0}

#comments article	{border: dotted 1px #aaaaaa;
	margin-bottom: 10px;
	padding: 10px 20px 20px 20px}

#comments .comment-content	{margin-left: 30px}

これで見た目はよくなりました(^^)/

画像5

Twitter➡@t_kun_kamakiri
ブログ➡宇宙に入ったカマキリ(物理ブログ)

この記事が気に入ったらサポートをしてみませんか?