vicuna CMS テーマの修正 (comment_form()関数・paginate_comments_links()関数の追加)

今回のvicuna CMS – WordPress Theme Ext. Custom (以下 vicuna とします)の修正はcomment_form()関数とpaginate_comments_links()関数の追加についてです。

comment_form()関数はこのコードが書かれた箇所にコメントフォームを設置してくれる関数で、paginate_comments_links()関数は複数のコメントをページで分割して表示できるようにした際にページ送りを設置するための関数で、どちらもコメントフォームの形成に必要とされている関数です(関数に関する詳細は WordPress Codex または WordPress Codex日本語版 、グーグル先生に 😛 )。

comment_form()関数はコードを入れるだけで、コメントの受付状況など設定に応じてコメントフォームを出力してくれます。また引数を使うことでコメントフォームの一部のHTMLコードや表記を変更することができます。

で、今回の変更でいろいろ迷って試したものの、最終的に表記だけを変更する形にしてHTMLコードはcomment_form()関数で出力されるのデフォルトのままにし、変更前のコメントフォームのデザインを彷彿とさせるようCSSで設定するようにしました。

コメントに関する表示を担っているのがcomments.phpファイルなので、このファイルの中のコメントフォームを設置させたい箇所にcomment_form()関数を配置します。が、その直前で望む表記になるようcomment_form()関数の引数となる配列を設定しておく必要があります。

で、基本的にデフォルトのデザインにして、コードの変更前後でコメントフォームとデザイン的に違和感がない程度にCSSを設定。名前・メール・URL・コメントの入力欄もHTMLタグ込みで引数として設定することもできるんですが、面倒くさかったデフォルトで事足りそうだったので変更しませんでした。もし変更したいという場合は$fieldsという配列を用意してそれぞれの表記を代入して、引数のメンバーとして一緒に設定します。

<?php
/*
		変更したい場合こんな感じでフィールドの表記を設定できます。
		$fields = array(
			'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
	            '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
			'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
	            '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
			'url'    => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' .
	            '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
		);
*/

		$args = array(
/*
			変更したい場合こんな感じでフィールドの表記を設定できます。
			$fields,	// <-- 上記で設定した配列をここに持ってくることで設定できます
			'comment_field'        => '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>',
*/
			'comment_notes_after'	=> '',
			'title_reply'		=> __('Comment Form', 'vicuna'),
			'title_reply_to'	=> __('Comment Form for %s', 'vicuna'),
			'cancel_reply_link'	=> __( 'Cancel reply' ),
			'label_submit'		=> __('Post'),
		);

		comment_form($args);
?>

次はpaginate_comments_links()関数ですが、これも管理画面のディスカッション設定に応じてコメントをページに区切って表示するためのナビゲーションを出力してくれます。デフォルトの出力結果はこんな感じ。

<a class="prev page-numbers" href="http://localhost/wordpress/2007/07/10/welcome/comment-page-2/#comments">&laquo; 前へ</a>
<a class='page-numbers' href='http://localhost/wordpress/2007/07/10/welcome/comment-page-1/#comments'>1</a>
<a class='page-numbers' href='http://localhost/wordpress/2007/07/10/welcome/comment-page-2/#comments'>2</a>
<span class='page-numbers current'>3</span>
<a class='page-numbers' href='http://localhost/wordpress/2007/07/10/welcome/comment-page-4/#comments'>4</a>
<a class="next page-numbers" href="http://localhost/wordpress/2007/07/10/welcome/comment-page-4/#comments">次へ &raquo;</a>

引数を利用すれば表記などを変更できると思いますが、今回は表記をそのままにしてデザインはCSSで整えることに。そしてpaginate_comments_links()関数を入れるところはコメントを表示するループの外側に。ということで、この関数もcomments.phpファイルのwp_list_comments()関数の前後になり、具体的にはこんな感じです。

	<div class="page-link"><?php paginate_comments_links(); ?></div>
	<ol class="log">
		<?php wp_list_comments( array( 'type' => 'comment', 'callback' => 'vicuna_comments' ) ); ?>
	</ol>

…ま、たくさんコメントが来るサイト向けのカスタマイズで、当方のブログでは確実に無縁のものですけどね 😆

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です