Created
February 12, 2016 12:54
-
-
Save naranissin/11078ae48537f2348445 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/////////以下、function.phpへの追記箇所/////////// | |
//出欠確認 | |
add_filter('the_content', 'join_check'); | |
function join_check($content){ | |
//選択肢をここで設定 | |
$key_select = array("参加","保留","不参加"); | |
$ret=""; | |
//ログインしてないユーザーには表示しない | |
if(is_user_logged_in()){ | |
global $user_identity,$post; | |
//カスタムフィールドからデータを読み込む | |
$join_data = unserialize(get_post_meta($post->ID,'join_meta',true)); | |
$comment_data = unserialize(get_post_meta($post->ID,'comment_meta',true)); | |
//送信ボタンを押したときの処理(各カスタムフィールドを更新する) | |
if($_POST['select_join_'.$post->ID]){ | |
//出欠登録 | |
$join_data[$user_identity] = $_POST['select_join_'.$post->ID]; | |
$join_s = serialize($join_data); | |
update_post_meta($post->ID, 'join_meta', $join_s); | |
//コメント登録 | |
$comment_data[$user_identity] = $_POST['comment']; | |
$comment_s = serialize($comment_data); | |
update_post_meta($post->ID, 'comment_meta', $comment_s); | |
} | |
//出欠の回答ごとにグループ分けをして | |
//出力内容を連想配列に格納。 | |
foreach((array)$join_data as $key => $value){ | |
foreach($key_select as $key_group){ | |
if($value == $key_group){ | |
$flag = 0; | |
foreach($comment_data as $key2 => $value2){ | |
if($key2 == $key){ //joinとcommentのユーザ名が一致したとき | |
if($value2){ //コメントがあればTRUE | |
//出力内容(名前とコメント)を格納 | |
$group[$key_group][] = $key.'<font color="#999999">('.$value2.')</font>'; | |
}else{ | |
//出力内容(名前)を格納 | |
$group[$key_group][] = $key; | |
} | |
$flag=1; | |
} | |
} | |
if($flag == 0){$group[$key_group][] = $key;}; | |
} | |
} | |
} | |
///////OUT PUT//////// | |
//カテゴリが"出欠確認"の場合のみ表示する | |
if(in_category('ここにカテゴリを記入')){ | |
//出欠確認フォーム | |
$ret .= '<ul>'; | |
$ret .= '<br><form method="POST">'; | |
$ret .= '<input type="hidden" value="join_check" >'; | |
$ret .= '<select name="select_join_'.$post->ID.'">'; | |
foreach($key_select as $key_option){ | |
$ret .= '<option value="' . $key_option . '"'; | |
if($join_data[$user_identity] == $key_option){ | |
$ret .= 'selected'; | |
} | |
$ret .='>' . $key_option . '</option>'; | |
} | |
$ret .= '</select>'; | |
$ret .= ' <small>コメント</small>:<input type="text" name="comment" value="'.$comment_data[$user_identity].'" size="30"/>'; | |
$ret .= '<input type="submit" value="投稿">'; | |
$ret .= '</form>'; | |
//出欠回答状況 | |
$ret .='<table><tr><td>'; | |
//回答ごとにループ | |
$grp_no = 0; | |
foreach($key_select as $key_title){ | |
$grp_no++; | |
//回答ごとの人数をカウント | |
$ninzu_count = 0; | |
foreach((array)$group[$key_title] as $group_user){ | |
$ninzu_count++; | |
} | |
$ret .= '<div class="join_group join_no_' . $grp_no . ' "style="margin:0px 0px 0px 0px;">'; | |
$ret .= '<b>'. $key_title . '('.$ninzu_count.')</b><br/>'; | |
$ret .= '<font size="2">'; | |
//ユーザごとにループ | |
$ret .='<ul>'; | |
$flag = 0; | |
$str_count = 0; | |
foreach((array)$group[$key_title] as $group_user){ | |
if($flag ==1){ | |
$ret .= ', '; | |
$str_count += 3; | |
} | |
//一行あたりの文字数が多すぎるときの改行処理。 | |
//文字長45文字以上でコメントありと判定して | |
//HTMLタグ分の41文字を文字数から差し引く | |
//文字長が$max_strを超えたら改行処理 | |
$str_len = strlen($group_user); | |
$str_count += $str_len; | |
if($str_len > 45){ | |
$str_count -= 41; | |
$str_len -= 41; | |
} | |
$max_str = 93; | |
if($str_count > $max_str){ | |
$ret .='<br/>'; | |
$str_count = $str_len; | |
} | |
//名前、コメントを出力 | |
$ret .= $group_user; | |
//一行あたりの文字数が異常に多いときにもう一度改行 | |
if($str_len > $max_str){ | |
$ret .='<br/>'; | |
$str_count = 0; | |
} | |
$flag = 1; | |
} | |
$ret .='</ul>'; | |
$ret .='</font><br/>'; | |
} | |
$ret .= '</td></tr></table></ul>'; | |
} | |
} | |
return $content . $ret; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment