CSSが得意な渋谷のウェブデザイナーのウェブ開発メモ

[PR] Another American Dictionary Spanglish with us!

Wordpress コメント項目を追加する

wordpressの投稿に対するコメントのデフォルト項目は名前、メールアドレス、URL、コメント。そこに(例)男女選択項目を追加します。テーマフォルダの中のfunctions.phpにどんんどんコピペ。まずは入力項目欄。

add_filter( 'comment_form_defaults','change_comment_form_sex');
function change_comment_form_sex($default) {
	$commenter = wp_get_current_commenter();	
		$default['fields']['email'] .= '<p class="comment-form-author">' .
		'<label for="sex">'. __('性別') . ''</label>
		<select id="sex" class="sex" name="sex">
			<option value="">性別
			<option value="男性">男性
			<option value="女性">女性
		</select>
		</p>';
	return $default;
}

次に男女選択項目欄を入力必須にするためのコード

add_filter( 'preprocess_comment', 'verify_comment_meta_data_sex' );
function verify_comment_meta_data_sex($commentdata) {
  if ( ! isset( $_POST['sex'] ) )
        wp_die( __('Error: please fill the required field (sex).') );
		return $commentdata;
}

次にここで入力(選択)された情報をコメント情報と一緒にデータベースに登録するためのコード。データはテーブル「wp_postmeta」に入ります。

add_action( 'comment_post', 'save_comment_meta_data_sex' );
function save_comment_meta_data_sex( $comment_id ) {
	$sexies = explode(',', $_POST['sex']);
	foreach ($sexies as $sex)
		echo update_comment_meta( $comment_id, 'sex', $sex, true);
}

で最後に表示するためのコード

add_filter( 'get_comment_author_link', 'attach_sex_to_author' );
function attach_sex_to_author( $author ) {
  $sexies = get_comment_meta( get_comment_ID(), 'sex', false );
  if ( $sexies ) {
		foreach ($sexies as $sex)
		  $author .= $sex . ' ';
	}
	return $author;
}

追加する項目が複数ある時はピンクやオレンジの名前を変えてね。

参照:[Adding Input Fields To Comment Form]

関連記事
この記事役にたった?
管理者にだけメッセージを送る