Facebook にシェア
[`evernote` not found]
LINEで送る

Twitterで出欠確認を取れるサイトをみて、こんな感じのをwordpressでできないかなーと
思って簡易的な出欠確認を作ってみました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//出欠確認テスト
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));
        //カスタムフィールド join_meta からデータを読み込む
         
        //送信ボタンを押したときの処理
        if($_POST['select_join']){                 
            $ret .= $_POST['select_join'] . 'を選択しました。';     //選択メッセージ(不要なら消してOK)
            $join_data[$user_identity] = $_POST['select_join']; //選択した項目を取得、上書き
            $join_s = serialize($join_data);                   
            update_post_meta( $post->ID, 'join_meta', $join_s);  //更新したデータをカスタムフィールドに保存
        }  
         
        //参加者のグループ分け処理
        foreach($join_data as $key => $value){
            foreach($key_select as $key_group){
                if($value == $key_group){$group[$key_group][] = $key;}
            }
        }
         
        //出欠確認ボタン作成
        $ret .= '<form method="post">';
        $ret .= '<input type="hidden" value="join_check" >';
        $ret .= '<select name="select_join">';
        foreach($key_select as $key_option){
            $ret .= '<option value="' . $key_option . '">' . $key_option . '</option>';
        }
        $ret .= '</select>';
        $ret .= '<input type="submit" value="送信"></form>';
         
        //参加者のグループを表示
        $grp_no = 0;
        foreach($key_select as $key_title){
            $grp_no++;
            $ret .= '<div class="join_group join_no_' . $grp_no . '">';
            $ret .= '<h3>' . $key_title . '</h3>';
            $ret .= '<ul>';
            foreach($group[$key_title] as $group_user){
                $ret .= '<li>' . $group_user . '</li>';
            }
            $ret .= '</ul>';
            $ret .='</div>';
        }
    }
    return $content . $ret;
}

以上をfunction.phpに追加します。

the_contentにフックしており、ログイン状態の場合参加するかどうかのボタンが表示されます。
参加者はユーザー登録をしている人のみが対象となります。
また、参加者データとしてカスタムフィールド join_meta に保存しています。

XX月XX日にXXXXを行います。などの内容で投稿をすることで、簡易的な出欠確認として使用してみはいかがでしょうか?
*尚、簡易的に作った物なので、不具合、バグ等により予想外の事態になる可能性もあるので自己責任でお願いします。
バグがあった場合は報告してくれると助かります。